public void BuildActions(TypeBuilder builder, ServiceControllerBuildContext context) { foreach (var actionModel in context.Controller.Actions) { _serviceActionBuilder.Build(builder, new ServiceActionBuildContext(actionModel, context)); } }
public Task <TypeInfo> Build(ServiceControllerBuildContext context) { var typeBuilder = this.BuildType(context); this.BuildAttribute(typeBuilder, context.Controller.Attributes); this.BuildControllerIL(typeBuilder, context); this.BuildActions(typeBuilder, context); context.DynamicTypeInfo = typeBuilder.CreateTypeInfo(); return(Task.FromResult(context.DynamicTypeInfo)); }
private void BuildControllerIL(TypeBuilder builder, ServiceControllerBuildContext context) { context.ServiceProviderField = builder.DefineField("_serviceProvider", typeof(IServiceProvider), FieldAttributes.InitOnly | FieldAttributes.Public); var controllerModel = context.Controller; this.BuildConstructor(builder, il => { il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Stfld, context.ServiceProviderField); il.Emit(OpCodes.Ret); }); }
public ServiceActionBuildContext(ActionModel action, ServiceControllerBuildContext controllerBuildContext) { this.ActionModel = action; this.ControllerBuildContext = controllerBuildContext; }
public TypeBuilder BuildType(ServiceControllerBuildContext context) { var moduleBuilder = this.BuildModule(context.Controller.ModuleName); //1.构建程序集、创建模块 return(moduleBuilder.DefineType(context.Controller.ControllerName, TypeAttributes.Public)); //定义类 }