Rob*_*vey 17 c# extension-methods
您是否为所有扩展方法使用全局的catchall命名空间,或者是否将扩展方法放在与它们扩展的类相同的命名空间中?
或者您是否使用其他方法,如应用程序或特定于库的命名空间?
我问,因为我需要扩展System.Security.Principal.IIdentity,并且将扩展方法放在System.Security.Principal命名空间中似乎有意义,但我从未见过它以这种方式完成.
小智 12
将扩展名放在与它们扩展的类相同的名称空间中.这样,当您使用该类时,您可以使用扩展.
此外,微软说这是关于扩展方法:
通常,我们建议您谨慎实施扩展方法,并且只在必要时才实施.必要时,必须扩展现有类型的客户端代码应通过创建从现有类型派生的新类型来实现.
有关扩展方法的详细信息,请参阅有关扩展方法的MSDN页面.
如果它们是整个解决方案中使用的扩展方法(例如超过60%的类),我将它们放在解决方案的基本命名空间中(因为它们将自动导入到父命名空间中,不会每次导入常见的东西).
在这个类别中,像:
.IsNullOrEmpty(this string value)和.HasValue(this string value)
但是,如果它们非常具体且很少使用,我将它们放在BaseNamepace.Extensions命名空间中,因此必须手动导入它们,并且不要在intellisense中显示混乱的东西.
我建议将所有扩展方法放在一个命名空间中(顺便说一下,这也是微软通过将它们放在'System.Linq'命名空间内的单个类'Extensions'中对Linq所做的事情).
由于Visual Studio没有提供有关如何查找要使用的扩展方法的线索,因此只需记住一个名称空间即可减少混淆.