1
10
非常 精确开始:如果已经有一个同名的方法(不用担心参数类型),那么警告就是一个好的开始。 编辑:好的…这里有一个 非常粗糙的 tool to at least give a starting point. 它看起来至少能起作用 一些 extent with generic types - but it's not trying to do anything with parameter types or names... 部分原因是参数数组变得很难处理。它还“完全”加载程序集,而不是只使用反射,这会更好-我尝试了“正确”的路径,但遇到了一些问题,这些问题不是立即解决的,因此返回到快速和肮脏的路径:) 不管怎样,希望它在某个地方对某人有用。
|
2
2
我喜欢乔恩的回答,但还有另一种方法类似于丹尼尔的。如果你有很多扩展方法,你可以定义一个类似的“名称空间”。如果你有一个稳定的工作界面(例如,如果你知道
我这样做是为了添加将字符串视为文件路径的方法。我定义了一个
定义“扩展名称空间”时,需要提供一种输入它的方法和一种离开它的方法,例如:
The method to "leave" the "namespace" may work better as an instance method instead of an extension method. 我的
如果你想要
Final Note: the "As" prefix on entering/leaving the namespace is a sort of unspoken guideline. LINQ uses this system (e.g.,
我写 a blog post 今年年初,关于我所说的“基于扩展的类型”,有更多的陷阱,而不仅仅是无法重写实例方法。然而,这是一个非常有趣的概念。 |
3
0
减少发生这种情况的一个可能的方法是在扩展方法名称的末尾包含缩写ext。我知道,这是 非常 丑陋,但它降低了发生这种情况的机会。
或
|
Codebadger · 将泛型传递给扩展方法 7 年前 |
Otman IGHOULASSEN · 从子类调用基类的扩展方法 7 年前 |
sirksel · 拳击弦场或扩展Kotlin中所有弦的替代方案? 7 年前 |
Roman · 在Swift中使用布尔的视图控制器扩展 7 年前 |
Mercato · 为什么协议默认值必须通过Swift中的扩展来实现? 7 年前 |