|
|
1
2
IMHO说,在处理无法修改的API时,扩展方法是一种合理的方法,可以在保持相对解耦的同时扩展API的表达能力。 扩展方法的最大问题在于,基于名称空间包含(文件顶部的using语句),它们被隐式推断为可用。因此,如果您只是忘记了包含名称空间,那么您最终可能会挠头,想知道为什么没有可用的名称空间。
|
|
|
2
2
为了回答您的直接问题,我认为通过额外的麻烦将您的功能从基本功能中分离出来是一种糟糕的代码味道。从使用角度来看,不要担心代码与它们的代码分离。首先,由于现在有两个地方可以查找相同的功能,因此查找您要查找的内容变得更加困难;其次,语法使您的扩展看起来像是在MTPAEC属性上操作,而不是在核心对象(它们就是这样)上操作。 我的建议是使用实际的扩展方法,它允许您拥有它,但不需要额外的构造函数。
剩下的就交给C。 看你上面的建议,我想你得把这两门课分开。一个用于使用扩展机制提供扩展组,另一个用于提供每组逻辑。 如果你需要把你的东西和你的一瞥区分开来,那么使用命名约定使你的外观独一无二。尽管悬停并通过intellisense,它会告诉您这是一个扩展方法。
|
|
|
3
0
我的观点是,你不必要地增加了一个额外的间接层次。您希望扩展方法在原始对象上可用。。。那为什么不把它们放在那里呢?Intellisense会让您知道这些对象是扩展,这是您真正关心的罕见情况。 |