public CodegenExpression Make( CodegenMethodScope parent, SAIFFInitializeSymbol symbols, CodegenClassScope classScope) { var mode = _forge.FactoryMode; if (!(mode is VirtualDataWindowFactoryModeManaged)) { throw new ArgumentException("Unexpected factory mode " + mode); } var managed = (VirtualDataWindowFactoryModeManaged) mode; var injectionStrategy = (InjectionStrategyClassNewInstance) managed.InjectionStrategyFactoryFactory; var factoryField = classScope.AddDefaultFieldUnshared( true, typeof(VirtualDataWindowFactoryFactory), injectionStrategy.GetInitializationExpression(classScope)); var builder = new SAIFFInitializeBuilder( typeof(VirtualDWViewFactory), GetType(), "factory", parent, symbols, classScope); builder .Eventtype("eventType", EventType) .Expression( "factory", ExprDotMethod( factoryField, "CreateFactory", NewInstance(typeof(VirtualDataWindowFactoryFactoryContext)))) .Constant("parameters", _parameterValues) .Expression( "ParameterExpressions", ExprNodeUtilityCodegen.CodegenEvaluators( _validatedParameterExpressions, builder.Method(), GetType(), classScope)) .Constant("NamedWindowName", _namedWindowName) .Expression( "compileTimeConfiguration", SerializerUtil.ExpressionForUserObject(_customConfigs)); return builder.Build(); }