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

时间: 2024-09-15 18:20:51

小技巧 - 简化你的泛型API的相关文章

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用可以提高开发效率,再就是因为在交流过程中有很多童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就我的理解把我的一些想法和大家交流一下,最后是对于入门篇做一下总结,以及对后面的一些教程做一下说明. 附上: 官网地址

代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧

最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关系.而随着iOS开发发展至今,可以说在UI制作上大家逐渐分化为了三种主要流派:使用代码手写UI及布局:使用单个xib文件组织viewController或者view:使用StoryBoard来通过单个或很少的几个(关于这点稍后会进行展开)文件构建全部UI.应该使用哪种方式来制作UI已经是iOS开发中

提高网页打开速度的一些小技巧

互联网带宽越来越宽,似乎让网页的加载速度得到了质的飞跃.其实不然,因为随着带宽的提高,网页上的对象也越来越多,因此加快网页打开速度还是一个重要的课题. 加快网页的打开速度,有三个路径,一是提高网络带宽,二是用户在本机做优化,三是网站设计者对网页做一定的优化.这篇文章站在一个网站设计者的角度,分享一些优化网页加载速度的小技巧. 一.优化图片 几乎没有哪个网页上是没有图片的.如果你经历过56K猫的年代,你一定不会很喜欢有大量图片的网站.因为加载那样一个网页会花费大量的时间. 即使在现在,网络带宽有了

提高PHP运行速度的一些小技巧分享

使用PHP的最大1个优势就是速度快.一般情况下,PHP总是具有足够的速度支持Web内容动态生成,许多时候甚至无法找出比它更快的方法.然而,当面对庞大的访问量.高负荷的应用.有限的带宽,以及其他各种带来性能瓶颈的因素时,就需要考虑怎样提高PHP的性能了   1.代码优化 代码优化不仅仅是写出干净和清晰的代码,而是对代码进行一定的简化.可以使用Zend Optimizer来自动帮助完成这些繁杂的工作.Zend Optimizer可以从Zend Technologies的网站http://www.ze

50个Windows 8 应用小技巧

Windows 8消费者预览版(Consumer Preview)Build 8250已经发布,这一版本已经是比较成熟的版本,安装体验的朋友相信一定不少,下面就给大家提供一些相关应用小技巧,希望可以让大家体验Windows 8各项功能的时候更为方便一些. 1.锁屏 启动之后,用户将首先看到Windows 8的锁屏界面,每当系统启动.恢复或登录的时候,锁屏就会出现.如果您使用的是触摸屏设备,那么用手指一扫然后输入密码就可以登录系统.如果不是触摸屏设备,那么就用鼠标点击之后就能够登录系统. 2.Me

125个提升网页可用性的优化小技巧(三)

  往期回顾: <有图有案例!125个提升网页可用性的优化小技巧(一)> <有图有对比!125个提升网页可用性的优化小技巧(二)> 除了引导用户,还要减少他们的认知流程,以保持流畅状态. 尽可能少让用户做计算 千万别把计算这种事情丢给用户,让计算机来处理. △ 显示剩余数量 在界面内体现用户当前所处位置 界面就像机场,如果没有"你在这里"的标记,用户会迷路,因此记得提供标记. △ 在导航菜单上突出当前所选 △ 在复杂的界面中提供面包屑导航或步骤图示 △ 在页面标

分享优化网页加载速度的7个小技巧

一.优化图片 几乎没有哪个网页上是没有图片的.如果你经历过56K猫的年代,你一定不会很喜欢有大量图片的网站.因为加载那样一个网页会花费大量的时间. 即使在现在,网络带宽有了很多的提高,56K猫逐渐淡出,优化图片以加快网页速度还是很有必要的. 优化图片包括减少图片数.降低图像质量.使用恰当的格式. 1.减少图片数:去除不必要的图片. 2.降低图像质量:如果不是很必要,尝试降低图像的质量,尤其是jpg格式,降低5%的质量看起来变化不是很大,但文件大小的变化是比较大的. 3.使用恰当的格式:请参阅下一

iOS开发的一些小技巧

  1.神器计算图片位置的函数:AVMakeRectWithAspectRatioInsideRect() 通过这个函数,我们可以计算一个图片放在另一个 view 按照一定的比例居中显示,可能说的我比较抽象,还是用图来显示,可以说它可以直接一个 image 以任何的比例显示显示在 imageview 中居中所处的位置,拿 UIViewContontAspectFit来演示, UIImageView *imageView = [[UIImageView alloc] initWithFrame:C

Win 8操作系统应用小技巧五则

下面就给大家提供一些相关应用小技巧,希望可以让大家体验Windows 8各项功能的时候更为方便一些. 1.锁屏 启动之后,用户将首先看到Windows 8的锁屏界面,每当系统启动.恢复或登录的时候,锁屏就会出现.如果您使用的是触摸屏设备,那么用手指一扫然后输入密码就可以登录系统.如果不是触摸屏设备,那么就用鼠标点击之后就能够登录系统. 2.Metro主屏 当用户登录Windows 8系统之后,新的Metro启动屏幕就会出现,上面铺满了瓦片式的程序.当然了,如果您不喜欢某个应用程序,您也可以右击将