【问题标题】:Can't Access My Extension Method无法访问我的扩展方法
【发布时间】:2012-01-10 20:22:38
【问题描述】:

寻找一种方法来检查一个字符串是否包含另一个忽略的大写/小写,我找到了it

工作正常。然后,我尝试将其放入我的 StringExtensions 命名空间。

namespace StringExtensions
{

    public static class StringExtensionsClass
    {
        //... 

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

然后:

using StringExtensions;

...

if (".. a".Contains("A", StringComparison.OrdinalIgnoreCase))

但我收到以下错误:

方法“包含”没有重载需要“2”个参数

我该如何解决?

【问题讨论】:

    标签: c# .net string overloading


    【解决方案1】:

    当你想使用你的扩展时,添加这个 using 语句:

    using StringExtensions;
    

    由于声明扩展方法的方式,Visual Studio 不会自行找到它们,并且常规的 Contains 方法需要一个参数,因此您的例外。

    【讨论】:

    • 是的 -- Intellisense 只会出现工作,因为方法名称已经存在。
    【解决方案2】:

    我发现了我的错误:

    对于这个适用于dynamic 类型需要使用caststring。 .ToString() 方法不够用。

    if (((string)result.body).Contains(foo, StringComparison.OrdinalIgnoreCase))
    

    现在工作正常。 再次感谢stackoverflow。 :)

    【讨论】:

    • 对,因为它是dynamic,所以不能保证它没有一个名为ToString 的方法,它返回的不是字符串,所以任何方法调用的结果都是dynamic编译器始终将其视为dynamic
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    相关资源
    最近更新 更多