![]() |
1
7
不 ,这不是好的做法。您希望在 最低点 . 我相信每件事都有一个时间和一个地方,除了扩展方法 系统.对象 几乎永远都不合适。您应该能够在继承堆栈的更底层应用这样的扩展方法。否则,它会扰乱您的智能感知,并可能最终被其他开发人员错误地使用/依赖。 但是,处理空值的数据对象的扩展方法是 很好的使用 扩展方法。考虑把它们放在你身上 数据阅读器 . 我有一个名为valueordefault的泛型扩展方法。…好吧,我给你看一下:
那是vb,但你知道了。这个吸盘为我节省了大量的时间,而且在读取数据行时,它确实能使代码变得干净。 你在正确的轨道上 ,但您的拼写感觉是正确的:扩展方法太高。 将扩展方法放在单独的名称空间中总比什么都不做要好(这是对名称空间的完全有效的使用;linq使用了这个),但是您不必这样做。要使这些方法应用于各种db对象,请将扩展方法应用于 IDAT记录 . |
![]() |
2
5
摘自《框架设计指南》一书
|
![]() |
3
4
在一般情况下,对象的扩展方法可能很烦人,但是您可以将这些扩展方法放在 分离命名空间 所以开发人员必须主动选择使用这些方法。 如果将其与遵循单一责任原则的代码结合起来,则只需在相对较少的类中导入此命名空间。 在这种情况下,这种扩展方法是可以接受的。 |
![]() |
4
4
这个 Framework Design Guidelines 建议你不要这样做。但是,这些指导原则特别适用于框架,因此如果您发现它在您的(业务线)应用程序中非常有用,请这样做。 但请注意,在对象上添加这些扩展方法可能会使intellisense混乱,并可能会使其他开发人员感到困惑。他们可能不希望看到这些方法。在这种情况下,只需使用老式的静态方法:-)
有一件事我个人觉得很麻烦,那就是我的CPU(我的大脑)被训练去寻找可能的
NullReferenceException
因为扩展方法看起来像实例方法,所以我的大脑经常收到
PossibleUseOfNullObject
由中断
源代码分析器
当读到这样的代码时。在这种情况下,我必须分析
空引用异常
实际发生与否。这使得阅读代码更加困难,因为我经常被打断。
因此,我对使用扩展方法非常保守。但这并不意味着我认为它们没有用处。见鬼!我甚至写过
a library for precondition validation
广泛使用扩展方法。我甚至
initially defined extension methods
在
|
![]() |
5
2
或许可以考虑向idatarecord接口添加扩展方法?(oledbdatareader实现的)
|
![]() |
6
0
除了前面提到的原因之外,还应该记住扩展方法
这种限制的原因是向后兼容。见 this question 更多细节。 |
![]() |
7
0
我知道这不是最佳实践,但是对于我的项目,我喜欢在转换数据类型时包含这个扩展,我发现它比convert类容易得多。
它会出现在每个对象中,但我通常只使用这个对象而不使用扩展列表。 像这样工作…
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 4 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 5 月前 |
![]() |
CactusCake · if语句中应有分号 6 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 6 月前 |