1

式を評価して、評価の出力がnullかどうかを確認しようとしています。私のコードは次のようになります:

public class ObjectHelper<TType>
{
    public static bool PathHasNull(object pParentObjectInstance, Expression<Func<TType, object>> pPathToValue)
    {
        Expression lExpressionPart = pPathToValue.Body;
        if (lExpressionPart.NodeType == ExpressionType.TypeAs)
            {
                ExpressionParameter[] some_params;
                //some code that creates the ExpressionParameters goes here

                Delegate lDelegate = Expression.Lambda(lExpressionPart, some_params).Compile();
                lMemberValue = lDelegate.DynamicInvoke(lInstance); //not sure about this...
            }
            if (lMemberValue == null)
            {
                return true;
            }

        return false;
    }
}

これは、「アイテム」がどこから来たのかを説明するために、メソッドが呼び出される方法です。

TypeX x = GetXInstance();
ObjectHelper<TypeX>.PathHasNull(x, (item => item.Foo.Bar.Something as SomeTypeOfThing).SomeProperty);

Expression.Lambda(expr、some_parameters).Compile()を呼び出して、「as」の出力を取得するために使用できるデリゲートを取得しようとしましたが、「X」型の「変数」アイテムが参照するというエラーが発生し続けますスコープ''からですが、定義されていません'。

私はLambdaメソッドに正しいパラメーターを与えていないと推測していますが、誰かが正しいLambda呼び出しがどのように見えるべきか、そしてそれに対してどのパラメーターを提供すべきかについてのアイデアを手伝ってもらえますか?

4

0 に答える 0