【发布时间】:2014-11-04 03:41:37
【问题描述】:
在一项新工作中,有人告诉我避免使用您(或您的组织)无法控制的类型的扩展方法,这意味着外部库、框架类型(如字符串、列表等)。
我得到的论点是,如果框架开发人员现在决定实现一个与您的扩展方法具有相同名称和/或参数的方法,这将是糟糕的。
虽然可能会出现这个问题,但这个论点有效地将扩展方法的可用性降低到几乎为零。这个论点会被认为是有效的吗?我不建议在任何地方都使用扩展方法,但我想知道支持和反对它的类似论据。
【问题讨论】:
-
如果您害怕,只需制定一个政策,在您的扩展方法名称前面加上一些东西。
-
我认为如果出现这种情况,编译器会警告你,与此同时,你将获得可读性,获得重用,并在使用时减少代码重复扩展方法来向您不控制的代码添加功能。
-
@jeffdot:不,编译器不会警告你。例如,我有一个扩展方法
CopyTo(this Stream source, Stream target)- 如果您针对 .NET 3.5 编译会调用它,但如果针对 .NET 4+ 编译则不会... -
@JonSkeet 您可能刚刚说服我,我安装了一些第三方工具来为我提供这些工具。要去测试一下;谢谢。
标签: c# extension-methods