Exemple #1
0
        protected static HashSet <CloudItem> GetNodesWithConnection(CloudItem cloudItem, EntityGuid id)
        {
            HashSet <CloudItem> result = new HashSet <CloudItem>();

            Type thisType = cloudItem.GetType();
            var  fields   = thisType.GetFields(BindingFlags.Instance | BindingFlags.NonPublic);

            foreach (var field in fields)
            {
                if (field.FieldType.Assembly.FullName.StartsWith("CloudFoundry.CloudController", StringComparison.OrdinalIgnoreCase))
                {
                    var value      = field.GetValue(cloudItem);
                    var collection = value as IEnumerable;
                    if (collection != null)
                    {
                        foreach (var obj in collection)
                        {
                            if (ValueIsConnected(obj, id))
                            {
                                result.Add(cloudItem);
                                break;
                            }
                        }
                    }
                    else
                    {
                        if (ValueIsConnected(value, id))
                        {
                            result.Add(cloudItem);
                            break;
                        }
                    }
                }
            }

            foreach (var child in cloudItem.children)
            {
                foreach (var node in GetNodesWithConnection(child, id))
                {
                    result.Add(node);
                }
            }

            return(result);
        }