2011-12-01 141 views
12

尋找一種方法來檢查,如果一個字符串包含在另一個忽略大/小寫,我發現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)) 

,但我得到了以下錯誤:

No overload for method 'Contains' takes '2' arguments

如何解決呢?

回答

5

,我發現我的錯誤:

dynamic類型這個工程需要使用caststring。 。 ToString()方法是不夠的。

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

現在正常工作。 再次感謝stackoverflow。 :)

+4

對,因爲它是'dynamic',所以不能保證它沒有一個名爲'ToString'的方法,它返回的不是一個字符串,所以對'dynamic'的任何方法調用的結果總是被視爲'dynamic'由編譯器 – Davy8

20

當你想用你的擴展,添加此using語句:

using StringExtensions; 

的由於擴展方法聲明的方式,視覺工作室本身不會找到他們,並定期Contains方法接受一個論證,因此你的例外。

+0

Yup - 智能感知只會_appear_工作,因爲方法名已存在。 –