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; }
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)); }