Пример #1
0
        /// <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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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))());
 }