2011-12-01 20 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

を?そのため拡張メソッドが宣言されている方法の

using StringExtensions; 

は、それ自体でそれらを見つけることができませんのVisual Studio、および定期的なContains方法は、1を取る

:あなたはあなたの拡張機能を使用したい場合は

答えて

5

私は私のミスを見つけた:このため

dynamicタイプで動作しますがstringcastを使用する必要があります。 。 ToString()メソッドでは不十分です。

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

今すぐうまく動作します。 もう一度、stackoverflowありがとうございます。 :)

+4

これは '動的なので'文字列以外のものを返す 'ToString'メソッドがないという保証はないので、' dynamic'メソッド呼び出しの結果は常に '動的'として扱われますコンパイラによって – Davy8

20

は、この使用してステートメントを追加しますあなたの例外です。

+0

Yup - メソッド名が既に存在するため、Intellisenseが動作するのは_appear_のみです。 –