protected CodeBuilder(ICodeBuilderNames codeBuilderNames) { this.codeBuilderNames = codeBuilderNames; this.methodBodyTypesBuildResultMap = new Dictionary <Type, MethodBodyTypesBuildResult>(); this.methodDispatcherBuildResultMap = new Dictionary <Type, MethodDispatcherBuildResult>(); this.proxyGeneratorBuildResultMap = new Dictionary <Type, ProxyGeneratorBuildResult>(); }
public ActorCodeBuilder(ICodeBuilderNames codeBuilderNames) { this.codeBuilderNames = codeBuilderNames; this.methodBodyTypesBuildResultMap = new Dictionary <Type, MethodBodyTypesBuildResult>(); this.methodDispatcherBuildResultMap = new Dictionary <Type, MethodDispatcherBuildResult>(); this.proxyGeneratorBuildResultMap = new Dictionary <Type, ActorProxyGeneratorBuildResult>(); this.methodBodyTypesBuilder = new MethodBodyTypesBuilder(this); this.methodDispatcherBuilder = new MethodDispatcherBuilder <ActorMethodDispatcherBase>(this); this.proxyGeneratorBuilder = new ActorProxyGeneratorBuilder(this); }
private static Type BuildResponseBodyType( ICodeBuilderNames codeBuilderNames, CodeBuilderContext context, MethodDescription methodDescription) { var responseBodyTypeBuilder = CodeBuilderUtils.CreateDataContractTypeBuilder( moduleBuilder: context.ModuleBuilder, ns: context.AssemblyNamespace, typeName: codeBuilderNames.GetResponseBodyTypeName(methodDescription.Name), dcNamespace: codeBuilderNames.GetDataContractNamespace()); var returnDataType = methodDescription.ReturnType.GetGenericArguments()[0]; CodeBuilderUtils.AddDataMemberField( dcTypeBuilder: responseBodyTypeBuilder, fieldType: returnDataType, fieldName: codeBuilderNames.RetVal); return(responseBodyTypeBuilder.CreateTypeInfo().AsType()); }
private static Type BuildRequestBodyType( ICodeBuilderNames codeBuilderNames, CodeBuilderContext context, MethodDescription methodDescription) { var requestBodyTypeBuilder = CodeBuilderUtils.CreateDataContractTypeBuilder( moduleBuilder: context.ModuleBuilder, ns: context.AssemblyNamespace, typeName: codeBuilderNames.GetRequestBodyTypeName(methodDescription.Name), dcNamespace: codeBuilderNames.GetDataContractNamespace()); foreach (var argument in methodDescription.Arguments) { CodeBuilderUtils.AddDataMemberField( dcTypeBuilder: requestBodyTypeBuilder, fieldType: argument.ArgumentType, fieldName: argument.Name); } return(requestBodyTypeBuilder.CreateTypeInfo().AsType()); }
private static MethodBodyTypes Build( ICodeBuilderNames codeBuilderNames, CodeBuilderContext context, MethodDescription methodDescription) { var methodDataTypes = new MethodBodyTypes() { RequestBodyType = null, ResponseBodyType = null, HasCancellationTokenArgument = methodDescription.HasCancellationToken, }; if ((methodDescription.Arguments != null) && (methodDescription.Arguments.Length != 0)) { methodDataTypes.RequestBodyType = BuildRequestBodyType(codeBuilderNames, context, methodDescription); } if (TypeUtility.IsTaskType(methodDescription.ReturnType) && methodDescription.ReturnType.GetTypeInfo().IsGenericType) { methodDataTypes.ResponseBodyType = BuildResponseBodyType(codeBuilderNames, context, methodDescription); } return(methodDataTypes); }