/// <summary> /// 创建HttpApiBuilder /// </summary> /// <param name="services"></param> /// <param name="httpApiType"></param> /// <exception cref="ArgumentNullException"></exception> /// <returns></returns> private static IHttpApiBuilder CreateHttpApiBuilder(this IServiceCollection services, Type httpApiType) { if (httpApiType == null) { throw new ArgumentNullException(nameof(httpApiType)); } var builderType = typeof(HttpApiBuilder <>).MakeGenericType(httpApiType); return(Lambda.CreateCtorFunc <IServiceCollection, IHttpApiBuilder>(builderType)(services)); }
public void CtorTest() { var value = "name"; var name = Lambda.CreateCtorFunc <string, Model>(typeof(Model))(value).name; Assert.True(name == value); var func = Lambda.CreateCtorFunc <string, object>(typeof(Model)); var model = func.Invoke(value) as Model; Assert.True(model.name == value); }
/// <summary> /// 返回的Task(Of T)的T类型描述 /// </summary> /// <param name="dataType">数据类型</param> /// <exception cref="ArgumentNullException"></exception> public DataTypeDescriptor(Type dataType) { this.Type = dataType ?? throw new ArgumentNullException(nameof(dataType)); this.IsString = dataType == typeof(string); this.IsStream = dataType == typeof(Stream); this.IsByteArray = dataType == typeof(byte[]); this.IsHttpResponseMessage = dataType == typeof(HttpResponseMessage); this.IsHttpResponseWrapper = dataType.IsInheritFrom <HttpResponseWrapper>(); var apiTaskType = typeof(ApiTask <>).MakeGenericType(dataType); this.ITaskFactory = Lambda.CreateCtorFunc <ITask>(apiTaskType); if (this.IsHttpResponseWrapper == true) { this.HttpResponseWrapperFactory = Lambda.CreateCtorFunc <HttpResponseMessage, HttpResponseWrapper>(dataType); } }
/// <summary> /// 创建转换器 /// </summary> /// <param name="typeToConvert"></param> /// <param name="options"></param> /// <returns></returns> public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) { return(Lambda.CreateCtorFunc <JsonConverter>(typeof(JsonEnumConverter <>).MakeGenericType(typeToConvert))()); }