Beispiel #1
0
        public void ChangeType(Type type, Type genericParameter)
        {
            if (this.type != type || !initialized)
            {
                this.type = type;

                genericTypeDefinition = null;
                children = null;

                if (type != null)
                {
                    if (type.IsGenericType)
                    {
                        genericTypeDefinition = type.GetGenericTypeDefinition();

                        var genericParameters = genericTypeDefinition.GetGenericArguments();
                        var typeArguments     = type.GetGenericArguments();

                        children = new TypeTree[typeArguments.Length];

                        for (var i = 0; i < typeArguments.Length; i++)
                        {
                            children[i] = new TypeTree(typeArguments[i], genericParameters[i]);
                        }
                    }
                }
            }

            if (this.genericParameter != genericParameter || !initialized)
            {
                this.genericParameter = genericParameter;

                if (genericParameter != null)
                {
                    humanLabel         = genericParameter.HumanName();
                    programmerLabel    = genericParameter.Name;
                    genericConstraints = genericParameter.GetGenericParameterConstraints();

                    filter = new TypeFilter(genericConstraints)
                    {
                        GenericParameterAttributeFlags = genericParameter.GenericParameterAttributes
                    };
                }
                else
                {
                    humanLabel         = null;
                    programmerLabel    = null;
                    genericConstraints = null;
                    filter             = TypeFilter.Any;
                }
            }

            initialized = true;
        }
Beispiel #2
0
 private Func <IFuzzyOptionTree> GetOptions(TypeTree typeTree)
 {
     if (typeTree == rootTypeTree)
     {
         if (rootTypeFilter == TypeFilter.Any)
         {
             return(() => TypeOptionTree.All);
         }
         else
         {
             return(() => new TypeOptionTree(Codebase.types, rootTypeFilter));
         }
     }
     else
     {
         return(() => new TypeOptionTree(Codebase.types, typeTree.filter));
     }
 }
 private Func <IFuzzyOptionTree> GetTypeOptions(TypeTree tree)
 {
     return(() => new TypeOptionTree(Codebase.types, tree == typeTree ? typeFilter : typeTree.filter));
 }