public void NewTest() { var m1 = new ApiReturnDescriptor(typeof(IUserApi).GetMethod("Get1")); var m2 = new ApiReturnDescriptor(typeof(IUserApi).GetMethod("Get2")); Assert.True(m1.IsTaskDefinition); Assert.True(m1.Attribute.GetType() == typeof(AutoReturnAttribute)); Assert.True(m2.IsITaskDefinition); Assert.True(m2.Attribute.GetType() == typeof(JsonReturnAttribute)); }
public void ReturnValueMapper() { var m7 = new ApiReturnDescriptor(typeof(IUserApi).GetMethod("Get7")); Assert.NotNull(m7.ReturnDataType); Assert.Equal(typeof(string), m7.ReturnDataType); Assert.Equal(typeof(byte[]), m7.DataType.Type); Assert.NotNull(m7.ReturnValueMapper); Assert.IsType <TestReturnValueMapper>(m7.ReturnValueMapper); }
public static RtnInfoDes ToRtnInfo(this ApiReturnDescriptor apiReturnDescriptor) { RtnInfoDes rtnInfoDes = null; if (apiReturnDescriptor != null) { rtnInfoDes = new RtnInfoDes(); rtnInfoDes.TypeFullName = apiReturnDescriptor.ReturnType.FullName; rtnInfoDes.DataTypeFullName = apiReturnDescriptor.DataType.FullName; } return(rtnInfoDes); }
public void NewTest() { var m1 = new ApiReturnDescriptor(typeof(IUserApi).GetMethod("Get1")); var m2 = new ApiReturnDescriptor(typeof(IUserApi).GetMethod("Get2")); Assert.True(m1.IsTaskDefinition); Assert.True(m1.Attribute.GetType() == typeof(AutoReturnAttribute)); Assert.True(m2.IsITaskDefinition); Assert.True(m2.Attribute.GetType() == typeof(JsonReturnAttribute)); Assert.Null(m2.ReturnValueMapper); Assert.Equal(m2.ReturnDataType, m2.DataType.Type); }
/// <summary> /// 生成ApiReturnDescriptor /// </summary> /// <param name="method">方法信息</param> /// <returns></returns> private static ApiReturnDescriptor GetReturnDescriptor(MethodInfo method) { var returnAttribute = method.FindDeclaringAttribute <IApiReturnAttribute>(true); if (returnAttribute == null) { returnAttribute = new AutoReturnAttribute(); } var dataType = method.ReturnType.GetGenericArguments().FirstOrDefault(); var descriptor = new ApiReturnDescriptor { Attribute = returnAttribute, ReturnType = method.ReturnType, DataType = dataType, IsITaskDefinition = method.ReturnType.GetGenericTypeDefinition() == typeof(ITask <>), ITaskCtor = ApiTask.GetConstructor(dataType), }; return(descriptor); }