public static MutableType Create( Type baseType = null, string name = "MyMutableType", string @namespace = "MyNamespace", TypeAttributes attributes = TypeAttributes.Public | TypeAttributes.BeforeFieldInit, MutableType declaringType = null, IMemberSelector memberSelector = null, IInterfaceMappingComputer interfaceMappingComputer = null, IMutableMemberFactory mutableMemberFactory = null, bool copyCtorsFromBase = false) { baseType = baseType ?? typeof(UnspecifiedType); // Declaring type stays null. memberSelector = memberSelector ?? new MemberSelector(new BindingFlagsEvaluator()); interfaceMappingComputer = interfaceMappingComputer ?? new InterfaceMappingComputer(); mutableMemberFactory = mutableMemberFactory ?? new MutableMemberFactory(new RelatedMethodFinder()); var mutableType = new MutableType(declaringType, baseType, name, @namespace, attributes, interfaceMappingComputer, mutableMemberFactory); mutableType.SetMemberSelector(memberSelector); if (copyCtorsFromBase) { CopyConstructors(baseType, mutableType); } return(mutableType); }
public static MutableType CreateInterface( string name = "MyMutableInterface", string @namespace = "MyNamespace", TypeAttributes attributes = TypeAttributes.Public | TypeAttributes.Interface | TypeAttributes.Abstract, MutableType declaringType = null, IMemberSelector memberSelector = null, IRelatedMethodFinder relatedMethodFinder = null, IInterfaceMappingComputer interfaceMappingComputer = null, IMutableMemberFactory mutableMemberFactory = null) { // Declaring type stays null. memberSelector = memberSelector ?? new MemberSelector(new BindingFlagsEvaluator()); relatedMethodFinder = relatedMethodFinder ?? new RelatedMethodFinder(); interfaceMappingComputer = interfaceMappingComputer ?? new InterfaceMappingComputer(); mutableMemberFactory = mutableMemberFactory ?? new MutableMemberFactory(relatedMethodFinder); Assertion.IsTrue(attributes.IsSet(TypeAttributes.Interface | TypeAttributes.Abstract)); var mutableType = new MutableType(declaringType, null, name, @namespace, attributes, interfaceMappingComputer, mutableMemberFactory); mutableType.SetMemberSelector(memberSelector); return(mutableType); }