如何在整个解决方案中声明具有全局作用域的扩展?
本文关键字:全局 作用域 扩展 声明 解决方案 | 更新日期: 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(....);