小技巧 - 简化你的泛型API

简介:

   以下,我使用一个实例,分享一下用于简化泛型API设计的小技巧,“如何在泛型方法调用时,过滤掉可以隐式推断出的泛型参数”:


原有设计:

    系统中原来有这样一个静态的泛型API:

1
protected  static  PropertyInfo<TProperty> RegisterProperty<TOwner, TProperty>(Expression<Func<TOwner, TProperty>> propertyLambdaExpression)

 

使用方法:

1
var  codeProperty = RegisterProperty<User, string >(e => e.Code);

 

可以看到,该方法虽然可以从参数中隐式推断出 P 的具体类型,但是无法推断出 T 的具体类型,所以需要显式指定T的类型。
由于语法特性的问题,我们不能使用RegisterProperty<User>(e => e.Code)的方法来只传递一个泛型参数给API;导致在使用该方法时,不得不把所有的的泛型参数都显式指定,也就是上面的使用方法。


灵光一现:

    如何做到不传递第二个泛型参数呢?在N天之后,发现了以下这个方法可以简化传入的泛型参数:

为该泛型方法声明一个泛型类:

1
2
3
4
5
6
7
8
9
10
11
public  class  PropertyRegister<TOwner>
{
     public  static  PropertyInfo<TProperty> Register<TProperty>(
         Expression<Func<TOwner, TProperty>> propertyLambdaExpression
         )
     {
         TOwner onwer;
         TProperty propery;
         //...
     }
}
1
  

这时,调用方法变为:

1
var  codeProperty = PropertyRegister<PBS>.Register(e => e.Code);

 


这样好吗?

    这个方法的好处在于简化泛型API的客户程序调用代码,只显式传入无法隐式推断的泛型参数,不再传入多余的泛型参数。
    在这个例子中,只有两个泛型参数,可能您会觉得多此一举。不过当你的参数更多,而无法推断的参数只有一个时,这个方法就有发挥的地方了。 :)


本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2010/11/22/1883828.html,如需转载请自行联系原作者

相关文章
|
Java API
一种简单的不需要查询UI5文档就能获得所有API的小技巧
一种简单的不需要查询UI5文档就能获得所有API的小技巧
119 0
一种简单的不需要查询UI5文档就能获得所有API的小技巧
一种简单的不需要查询UI5文档就能获得所有API的小技巧
一个很小的tip:比如我想把UI5里 table里的每个column 设置成宽度根据显示的内容自适应,需要知道应该call控件的哪个方法来实现。
一种简单的不需要查询UI5文档就能获得所有API的小技巧
|
开发框架 前端开发 .NET
ASP.NET Core Web API 使用小技巧
ASP.NET Core Web API 使用小技巧 一、前言#  在目前的软件开发的潮流中,不管是前后端分离还是服务化改造,后端更多的是通过构建 API 接口服务从而为 web、app、desktop 等各种客户端提供业务支持,如何构建一个符合规范、容易理解的 API 接口是我们后端开发人员需要考虑的。
1516 0
|
Python
python win32api 使用小技巧
前些日子,由于需要,用python写了个小插件,通过win32api 访问外部程序的窗口 并且做些小操作。 因为原来对win32api 不怎么熟悉 所以只好求救。群里有个QQ:32034767 唐骁勇 tsy_007@163.com 这小伙子不错 心热人善 动手之前要选对好工具。
2007 0
|
2月前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
119 1
|
11天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
44 6
|
2月前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
2月前
|
SQL 存储 数据处理
|
2月前
|
XML JSON API
RESTful API设计最佳实践:构建高效、可扩展的接口
【8月更文挑战第17天】RESTful API设计是一个涉及多方面因素的复杂过程。通过遵循上述最佳实践,开发者可以构建出更加高效、可扩展、易于维护的API。然而,值得注意的是,最佳实践并非一成不变,随着技术的发展和业务需求的变化,可能需要不断调整和优化API设计。因此,保持对新技术和最佳实践的关注,是成为一名优秀API设计师的关键。
|
2月前
|
监控 API 数据安全/隐私保护
​邮件API触发式接口分析?邮件API接口好评榜
邮件API在企业通信和营销中至关重要,通过自动化邮件发送流程提升效率与客户满意度。本文解析邮件API触发式接口,即基于特定事件(如用户注册、购买产品)自动发送邮件的技术,能显著加快企业响应速度并增强用户体验。推荐市场上的优秀邮件API产品,包括SendGrid、Mailgun、Amazon SES、Postmark及新兴的AOKSend,它们各具特色,如高发送率、详细分析工具、灵活配置、强大的日志功能及用户友好的API接口,帮助企业根据不同需求选择最合适的邮件API解决方案。