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 = ;//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 = ,
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;
});
}
C# 泛型说明的更多相关文章
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- .NET面试题系列[8] - 泛型
“可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...
- C#4.0泛型的协变,逆变深入剖析
C#4.0中有一个新特性:协变与逆变.可能很多人在开发过程中不常用到,但是深入的了解他们,肯定是有好处的. 协变和逆变体现在泛型的接口和委托上面,也就是对泛型参数的声明,可以声明为协变,或者逆变.什么 ...
- 编写高质量代码:改善Java程序的151个建议(第7章:泛型和反射___建议106~109)
建议106:动态代理可以使代理模式更加灵活 Java的反射框架提供了动态代理(Dynamic Proxy)机制,允许在运行期对目标类生成代理,避免重复开发.我们知道一个静态代理是通过主题角色(Prox ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- C#泛型详解(转)
初步理解泛型: http://www.cnblogs.com/wilber2013/p/4291435.html 泛型中的类型约束和类型推断 http://www.cnblogs.com/wilber ...
- C# 泛型
C# 泛型 1.定义泛型类 在类定义中包含尖括号语法,即可创建泛型类: class MyGenericClass<T> { //Add code } 其中T可以遵循C#命名规则的任意字符. ...
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...
- java 泛型
1.Student stu =tool.getObj();右边得到的是Object类型,需要向下转型,强转换. 2. 3. 4.泛型方法不能被静态修饰这样写 5.如果想定义定义静态泛型方法,只能这样写 ...
- Java泛型的历史
为什么Java泛型会有当前的缺陷? 之前的章节里已经说明了Java泛型擦除会导致的问题,C++和C#的泛型都是在运行时存在的,难道Java天然不支持“真正的泛型”吗? 事实上,在Java1.5在200 ...
随机推荐
- http断点续传Range与Content-Range
今天用别人封装的libcurl库下载文件,发现下载下来的文件总是缺少头两个字节,用以下配置启用HTTP头信息打印后发现原来是设置了断点续传位置的原因 curl_easy_setopt(m_pCurl, ...
- javascript初学笔记
基本语句 赋值条件循环语句 javascript异常处理语句 trycatchfinally语句 Error对象 throw语句 函数 定义 调用 嵌套函数 函数的嵌套定义 内置函数 匿名函数和Fun ...
- SpringBoot整合WEB开发--(八)启动任务系统
简介: 有一些特殊的任务需要在系统启动时执行,例如配置文件的加载,数据库初始化等操作,如果没有使用SpringBoot,这些问题可以在Listener中解决.SpringBoot提供了两种解决方案:C ...
- FatMouse's Speed HDU - 1160 最长上升序列, 线性DP
#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> usi ...
- Babel 7 主要改变
1.不支持Node:0.10,0.12,4,5版本 2.更换命名-@babel/xxx 3.移除以年份命名的presets,统一更换成@babel/preset-env 4.移除 ’Stage‘ pr ...
- phpstorm格式化数组
如果我们想要的这样的数组格式的话,可以设置 <?php $arr = array["a" => 0, "b" => 1, "c&qu ...
- 2020牛客寒假算法基础集训营3 G.牛牛的Link Power II (树状数组维护前缀和)
https://ac.nowcoder.com/acm/contest/3004/G 发现每个“1”对于它本身位置产生的影响贡献为0,对前面的“1”有产生贡献,对后面的"1"也产生 ...
- vue组件插槽与编译作用域
<!DOCTYPE html> <html> <head> <title></title> </head> <script ...
- Ant风格表达式
1. ?:匹配任意一个字符 * :匹配0或者任意数量的字符 ** :匹配0或更多的目录
- git push出错的解决办法
今天push代码到线上的时候怎么都不行,尝试了很多办法报了好几种错比如: 反正就是各种错,然后其实不管什么错,你全部Git init 一下然后重新配置 git config --global user ...