如何在整个解决方案中声明具有全局作用域的扩展?

本文关键字:全局 作用域 扩展 声明 解决方案 | 更新日期: 2023-09-27 18:02:57

我想写一个扩展(实际上取自大小写不敏感'Contains(string)')

在进行字符串比较时补偿Turkey Test。扩展本身很简单:

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

现在的关键是我试图找出在哪里/如何包括这一点,以便在整个解决方案(其中包含多个项目,每个项目都有自己的命名空间和类),它可以很容易地通过字符串访问。

说有一个项目'Util'包含在所有其他项目中,是否有某种方式我可以把它放在Util(没有类?),以便它可以在整个解决方案中作为字符串全局引用。包含?

这可能吗?如果有,那是怎么回事?

如何在整个解决方案中声明具有全局作用域的扩展?

虽然我不建议这样做,但您可以通过将代码包含在命名空间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。包含任何地方,因为几乎所有的代码都使用System命名空间,这意味着它有点全局;)

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

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(....);