4

我正在尝试编写扩展名(实际上取自不区分大小写的 'Contains(string)'

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

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

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

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

这甚至可能吗?如果有怎么办?

4

2 回答 2

6

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

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

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

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

于 2014-05-11T05:31:54.120 回答
2

不,你不能做那样的事情。您可以做什么,您可以创建一个实用程序类库并将它的引用添加到您想要调用或使用如下函数的其他项目中:

namespace Utility
{
    public class StringUtil
    {
        public static bool Contains(string source, string toCheck, StringComparison comp)
        {
          return source.IndexOf(toCheck, comp) >= 0;
        }
    }
}


using Utility.StringUtil;

//call function
Contains(....);

或者

using Utility;

//call function

StringUtil.Contains(....);
于 2014-05-11T05:47:23.923 回答