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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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);
        }