我试图写一个扩展名(实际上取自Case insensitive '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在整个解决方案中全局引用?
这甚至可能吗?如果是这样的话?
答案 0 :(得分: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;
}
}
}
如果没有静态类,您的扩展方法将无法正常工作。
将上述内容放在.cs
文件中之后,您无法在任何地方使用String.Contains,因为几乎所有代码都使用System
命名空间,这意味着它有点全局;)
答案 1 :(得分:1)
不,你不能做那样的事情。你可以做什么,你可以创建一个实用类库,并在你想要调用的其他项目中添加它的引用或使用如下函数:
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(....);