2

式の文字列バージョンを返すジェネリック メソッドを作成しようとしています。

public string GetExpressionString(Expression<Func<T, bool>> expr) where T: class
{
    return exp.Body.ToString();
}

Cannot resolve symbol T

Tハードコーディングされたタイプに変更するとうまくいきます。

私は何を取りこぼしたか?

4

2 に答える 2

7

Tメソッドでジェネリック型パラメーターとして宣言する必要があります。

public string GetExpressionString<T>(Expression<Func<T, bool>> exp)
    where T: class
{
    return exp.Body.ToString();
}

// call like this
GetExpressionString<string>(s => false);
GetExpressionString((Expression<Func<string, bool>>)(s => false));

または親クラスで:

public class MyClass<T>
    where T: class
{
    public string GetExpressionString(Expression<Func<T, bool>> exp)
    {
        return exp.Body.ToString();
    }
}

// call like this
var myInstance = new MyClass<string>();
myInstance.GetExpressionString(s => false);

参考文献:

于 2013-07-08T15:51:02.917 に答える
6

構文エラーです。T をジェネリック型引数として宣言していません

public string GetExpressionString<T>(Expression<Func<T, bool>> expr) where T: class
{
    return exp.Body.ToString();
}

に注意してください<T>

于 2013-07-08T15:51:31.037 に答える