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