Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }