式を評価して、評価の出力が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呼び出しがどのように見えるべきか、そしてそれに対してどのパラメーターを提供すべきかについてのアイデアを手伝ってもらえますか?