我工作的承包商正在使用扩展方法
在我们拥有的知名内部类上实现CRUD
。我说最好使用普通的 inheritance
而不是 extension methods
,原因如下。
- 使用扩展方法混淆、隐藏和混淆
CRUD
方法的来源。 - 我假设
扩展方法
大量使用反射
(速度较慢)。
他的逻辑是,“它是编译的,所以速度很快。”也许我错了……但仅仅因为它是编译的并不意味着它不使用反射,也不意味着它比普通继承更快。
所以我的问题是:
扩展方法
是如何工作的?- 对您拥有的众所周知的类使用
继承
或扩展方法
哪个更好?
最佳答案
How do extension methods work under-the-hood?
它们只是静态方法;编译器重写像 myObject.MyExtensionMethod()
这样的调用至 MyExtensionClass.MyExtensionMethod(myObject)
.
Is it better to use inheretance or extension methods on WELL-KNOWN classes that you OWN?
这个问题没有单一的答案,这完全取决于上下文。但通常扩展方法在这些情况下最有用:
- 您不拥有扩展类型的代码
- 该方法针对一个接口(interface),并且对于该接口(interface)的所有实现都是相同的(例如
IEnumerable<T>
和 Linq 扩展方法)
关于c# - 扩展方法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804290/