私はjqGrid
を使ってデータを表示しています。 jqGridは、私がStartsWith
を使用する場合、私は有効な結果(次のようになります)を取得NotStartsWith Expression treeを作成するには
など、文字列は、等しいNotEqualsのような比較が含ま、STARTSWITH、NotStartsWithん検索機能を持っています
Expression condition = Expression.Call(memberAccess,
typeof(string).GetMethod("StartsWith"),
Expression.Constant(value));
DoesNotStartWith」のdoesnのので、 tは私がそれを作成した存在:
public static bool NotStartsWith(this string s, string value)
{
return !s.StartsWith(value);
}
これは動作しますが、私は、文字列を作成し、そのように、このメソッドを呼び出すことができます。
string myStr = "Hello World";
bool startsWith = myStr.NotStartsWith("Hello"); // false
だから今、私はそうのような式を呼び出す/作成することができます。
Expression condition = Expression.Call(memberAccess,
typeof(string).GetMethod("NotStartsWith"),
Expression.Constant(value));
しかし、私はArgumentNullException was unhandled by user code: Value cannot be null. Parameter name: method
エラーを取得します。
誰もがこれがうまくいかない理由やこれに対処するより良い方法を知っていますか?
'typeof(string)'を 'typeof(MyExtensionClass)'に変更しましたが、静的メソッドがnullインスタンスを必要とするという新しいエラーが発生しました。パラメータ名:インスタンス '。これは別のスレッドhttp://stackoverflow.com/questions/3695235/expression-equals/3695436#3695436で尋ねられましたが、私はどのように問題を解決するのか分かりません。 – Darcy
'Expression.Call'は、渡されるメソッド情報のために送信する最初の引数を検索しています。静的メソッド(非インスタンス)のため動作しません。このような、 'Expression.Call'の異なるオーバーロードを使用しなければなりません、http://msdn.microsoft.com/en-us/library/dd324092.aspx。最初にメソッド情報を与え、次に2つの引数を与えます。 – Kratz
Kratzに提供したコード例をありがとう! 'NotStartsWith'はうまくいきます。私は本当に助けに感謝します。 – Darcy