Esempio n. 1
0
        /// <summary>
        /// 生成ApiReturnDescriptor
        /// </summary>
        /// <param name="method">方法信息</param>
        /// <returns></returns>
        private static ApiReturnDescriptor GetReturnDescriptor(this MethodInfo method)
        {
            var returnAttribute = method.FindDeclaringAttribute <IApiReturnAttribute>(true);

            if (returnAttribute == null)
            {
                returnAttribute = new AutoReturnAttribute();
            }

            var dataType   = method.ReturnType.GetGenericArguments().FirstOrDefault();
            var descriptor = new ApiReturnDescriptor();

            descriptor.Attribute         = returnAttribute;
            descriptor.ReturnType        = method.ReturnType;
            descriptor.DataType          = dataType;
            descriptor.IsITaskDefinition = method.ReturnType.GetGenericTypeDefinition() == typeof(ITask <>);
            descriptor.ITaskCtor         = ApiTask.GetITaskConstructor(dataType);

            return(descriptor);
        }
Esempio n. 2
0
 /// <summary>
 /// 返回的Task(Of T)的T类型描述
 /// </summary>
 /// <param name="dataType">数据类型</param>
 public DataTypeDescriptor(Type dataType)
 {
     this.Type                  = dataType;
     this.ITaskConstructor      = ApiTask.GetITaskConstructor(dataType);
     this.IsHttpResponseWrapper = dataType.IsInheritFrom <HttpResponseWrapper>();
 }