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 MutableType( MutableType declaringType, Type baseType, string name, string @namespace, TypeAttributes attributes, IInterfaceMappingComputer interfaceMappingComputer, IMutableMemberFactory mutableMemberFactory) : base(name, @namespace, attributes, null, EmptyTypes) { // Base type may be null (for interfaces). // Declaring type may be null. ArgumentUtility.CheckNotNull("interfaceMappingComputer", interfaceMappingComputer); ArgumentUtility.CheckNotNull("mutableMemberFactory", mutableMemberFactory); SetDeclaringType(declaringType); SetBaseType(baseType); _interfaceMappingComputer = interfaceMappingComputer; _mutableMemberFactory = mutableMemberFactory; _allMethods = GetAllBaseMethods(baseType); _allMethodsIndex = new Dictionary <MethodInfo, int>(); for (int index = 0; index < _allMethods.Count; index++) { _allMethodsIndex.Add(MethodBaseDefinitionCache.GetBaseDefinition(_allMethods[index]), index); } _baseDefinitionsOfAbstractMethods = GetBaseDefinitionsOfAbstractMethods(baseType); }
public void SetUp() { _memberSelectorMock = MockRepository.GenerateStrictMock <IMemberSelector>(); _interfaceMappingComputerMock = MockRepository.GenerateStrictMock <IInterfaceMappingComputer>(); _mutableMemberFactoryMock = MockRepository.GenerateStrictMock <IMutableMemberFactory>(); _mutableType = MutableTypeObjectMother.Create( name: "MyAbcType", baseType: typeof(DomainType), memberSelector: _memberSelectorMock, interfaceMappingComputer: _interfaceMappingComputerMock, mutableMemberFactory: _mutableMemberFactoryMock); _mutableTypeWithoutMocks = MutableTypeObjectMother.Create(baseType: typeof(DomainType)); }
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); }