Beispiel #1
0
        public void AddTypeID(MutableType proxyType, AssembledTypeID typeID)
        {
            ArgumentUtility.CheckNotNull("proxyType", proxyType);
            ArgumentUtility.CheckNotNull("typeID", typeID);

            var typeIDField      = proxyType.AddField(c_typeIDFieldName, FieldAttributes.Private | FieldAttributes.Static, typeof(AssembledTypeID));
            var typeIDExpression = CreateNewTypeIDExpression(
                s_assembledTypeIDConstructor, typeID.RequestedType, typeID.Parts, typeof(object), (p, id) => p.GetExpression(id), "GetExpression");
            var typeIDFieldInitialization = Expression.Assign(Expression.Field(null, typeIDField), typeIDExpression);

            proxyType.AddTypeInitialization(typeIDFieldInitialization);
        }
Beispiel #2
0
        public void AddTypeInitializations(ClassContext classContext, IEnumerable <Type> mixinTypes)
        {
            ArgumentUtility.CheckNotNull("classContext", classContext);
            ArgumentUtility.CheckNotNull("mixinTypes", mixinTypes);
            Assertion.IsNotNull(_classContextField, "AddFields must be called first.");
            Assertion.IsNotNull(_mixinArrayInitializerField, "AddFields must be called first.");

            _concreteTarget.AddTypeInitialization(
                Expression.Block(
                    typeof(void),
                    InitializeClassContextField(classContext),
                    InitializeMixinArrayInitializerField(classContext.Type, mixinTypes)));
        }