zoukankan      html  css  js  c++  java
  • C# 泛型说明

    详细说明转  

    https://www.cnblogs.com/dotnet261010/p/9034594.html

    最近项目用到了多个参数的泛型方法,这里说明下泛型的组成:

    /// <summary>
            /// 泛型处理方法。
            /// </summary>
            /// <typeparam name="TRequestBody"></typeparam>
            /// <typeparam name="TTestParam"></typeparam>
            /// <typeparam name="TResponse"></typeparam>
            /// <param name="request"></param>
            /// <param name="tstr"></param>
            /// <param name="codeBlock"></param>
            /// <returns></returns>
            public static async Task<Response<TResponse>> Process<TRequestBody,TTestParam, TResponse>(this Request<TRequestBody> request, TTestParam tstr, Func<FlexBenefitAppContext, Task<Response<TResponse>>> codeBlock) where TRequestBody : class
            {
                var appContext = new FlexBenefitAppContext();// BuildAppContext();
                appContext.Culture = request.Header.Culture;
                appContext.ClientCode = "benefit-client-template";//get client code from request
                appContext.EmployeeId = 1;//use openId to get employee info
                return await codeBlock(appContext);
            }

    本方法中包含了3个类型参数,分别是Process<TRequestBody,TTestParam, TResponse>,在Process方法中,分别传入了这三个类型参数的参数this Request<TRequestBody> request,这里采用的是this扩展方法,所以第一个参数就是request本身, TTestParam tstr, Func<FlexBenefitAppContext, Task<Response<TResponse>>> codeBlock

    调用方法:

     public async Task<Response<EmployeeInfo>> Info([FromBody]Request<EmployeeNoParameter> request)
            {
                var response = new Response<EmployeeInfo>()
                {
                    Header = new ResponseHeader()
                    {
                        Version = 1,
                        IsSuccess = true,
                        Errors = new List<ResponseError>()
                    }
                };
           //这里的process方法调用上面定义的泛型方法
                return await request.Process("aaaa",async (appContext) =>
                {
                    using (var serviceContext = new ServiceContext(appContext))
                    {
                        var employeeInfo = await serviceContext.EmployeeService.GetEmployeeInfo(request.Body.EmployeeNo);
                        response.Body = employeeInfo;
                    }
    
                    return response;
                });
            }
  • 相关阅读:
    07word转换pdf
    高德纳《计算机程序设计艺术》(The Art of Computer Programming)的作者
    DbVisualizer 8 解决中文乱码问题 (20120310 20:23)
    IT has never been easier or harder
    el表达式和s:property的区别
    df 和 du 命令详解
    dbvisualizer 8.0 破解(free>personal)
    ping 中的TTL查看操作系统
    netstat 监控TCP/IP网络
    ls l 命令
  • 原文地址:https://www.cnblogs.com/tylertang/p/11271351.html
Copyright © 2011-2022 走看看