我经常需要通过将实现委托给我的类的成员来实现接口 . 此任务非常繁琐,因为即使Visual Studio为接口方法生成存根,我仍然必须编写代码来委派实现 . 它不需要太多思考,因此它可能通过代码生成工具自动化......
我可能不是第一个想到这个的人,所以必须有这样的工具,但我在Google上找不到任何东西......任何想法?
编辑:它似乎ReSharper can do it,但它相当昂贵......是否有一个具有相同功能的免费替代品?
我经常需要通过将实现委托给我的类的成员来实现接口 . 此任务非常繁琐,因为即使Visual Studio为接口方法生成存根,我仍然必须编写代码来委派实现 . 它不需要太多思考,因此它可能通过代码生成工具自动化......
我可能不是第一个想到这个的人,所以必须有这样的工具,但我在Google上找不到任何东西......任何想法?
编辑:它似乎ReSharper can do it,但它相当昂贵......是否有一个具有相同功能的免费替代品?
3 回答
我已经使用Resharper几个月了,它有一个很棒的功能来做到这一点 .
例如,编写以下代码:
将插入符号放在
_list
上,按Alt Ins(生成代码的快捷键),然后选择"Delegating members" . 选择您需要的成员,R#为他们生成委派成员:你可以试试这个:http://www.codeproject.com/KB/codegen/decorators.aspx?display=PrintAll&fid=1532149&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2837870
...看动态代理......
然而...
将接口实现委托给实例变量或类型[如typeof(type)]的能力是C#和VB.Net非常需要的语言特性 . 由于缺乏多重继承以及密封和非虚拟方法和属性的普遍存在,所需的绒毛代码量令人生畏 .
我认为以下语言增强功能可行... // C#
“supports”关键字(或诸如“defaults”之类的等价物)将使用名称和签名接口的正常名称和签名映射语义来标识“辅助”实现一个或多个接口的类字段值的有序列表 . 对应 . 任何本地实现都具有优先权,并且单个接口也可以由多个字段值实现 .