2

私はDLRを少しいじっていて、メソッドの呼び出しに少しこだわっています。たとえば、何かをスタックにプッシュする式を作成したいとします。

class StackInfo{

    protected Stack<SomeClass> _stack;

    public Expression Push(SomeClass item)
    {
        MethodInfo mi = _stack.GetType().GetMethod("Push");
        return Expression.Call(_stack, mi, item);
    }
}

_stack または item から Expression を取得する方法がよくわからないため、行き詰まっています。誰かが私を正しい方向に押してくれませんか?

4

1 に答える 1

3

Expression.Constantファクトリ メソッドを使用します。

class StackInfo
{
    protected Stack<SomeClass> _stack;

    public Expression Push(SomeClass item)
    {
        MethodInfo mi = _stack.GetType().GetMethod("Push");

        return Expression.Call(Expression.Constant(_stack), mi, Expression.Constant(item));
    }
}
于 2009-05-27T00:12:28.137 に答える