如何在整个解决方案中声明具有全局范围的扩展

rbo*_*boy 2 c# global-scope turkey-test

我正在尝试编写一个扩展名(实际上取自Case insensitive'Contains(string)')

它在进行字符串比较时补偿土耳其测试.扩展本身很简单:

public static bool Contains(this string source, string toCheck, StringComparison comp)
{
  return source.IndexOf(toCheck, comp) >= 0;
}
Run Code Online (Sandbox Code Playgroud)

现在关键是我正在试图弄清楚在哪里/如何包含这个,以便整个解决方案(包含多个项目,每个项目都有自己的命名空间和类),可以通过string.Contains轻松访问它.做class.string.Contains或其他方式.

假设有一个项目'Util',它包含在所有其他项目中,有些我可以将它放在Util中(没有类?),以便它可以作为string.Contains在整个解决方案中全局引用?

这甚至可能吗?如果是这样的话?

Ami*_*oki 5

虽然我不推荐它,但您可以通过在代码名称下的公共静态类中包含代码来轻松实现您的目标System.

namespace System
{
   public static class CaseInsensitiveContains
   {
       public static bool Contains(this string source, string toCheck, StringComparison comp)
       {
           return source.IndexOf(toCheck, comp) >= 0;
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

没有静态类,您的扩展方法将无法正常工作.

将上面的内容放在一个.cs文件中后,你不能在任何地方使用String.Contains,因为几乎所有代码都使用了System命名空间,这意味着它有点全局;)