无法访问我的扩展方法
Posted
技术标签:
【中文标题】无法访问我的扩展方法【英文标题】: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”个参数
我该如何解决?
【问题讨论】:
【参考方案1】:当你想使用你的扩展时,添加这个 using 语句:
using StringExtensions;
由于声明扩展方法的方式,Visual Studio 不会自行找到它们,并且常规的 Contains
方法需要一个参数,因此您的例外。
【讨论】:
是的 -- Intellisense 只会出现工作,因为方法名称已经存在。【参考方案2】:我发现了我的错误:
对于这个适用于dynamic
类型需要使用cast
到string
。 .ToString()
方法不够用。
if (((string)result.body).Contains(foo, StringComparison.OrdinalIgnoreCase))
现在工作正常。 再次感谢***。 :)
【讨论】:
对,因为它是dynamic
,所以不能保证它没有一个名为ToString
的方法,它返回的不是字符串,所以任何方法调用的结果都是dynamic
编译器始终将其视为dynamic
以上是关于无法访问我的扩展方法的主要内容,如果未能解决你的问题,请参考以下文章
无法从应用程序扩展访问我的“CKContainer”中的任何数据 - CloudKit,Swift
无法从使用 SWIG 创建的 python 访问 C++ 扩展模块及其方法