2

動的式を使用して構築された Lambda ステートメントを解析しようとすると、次のランタイム エラーが発生します。

タイプ 'System.Linq.Dynamic.ParseException' の例外が System.Linq.Dynamic.dll で発生しましたが、ユーザー コードで処理されませんでした 追加情報: タイプ 'MessageText' にプロパティまたはフィールド 't' が存在しません

 public static void ApplyAttributeRules<T>(this EntityTypeConfiguration<T> entity) where T : BaseObject

// logic that determines the propertyName ....
var propLambda = // this line fails
   System.Linq.Dynamic.DynamicExpression.ParseLambda<T, String>("t=>t." + PropertyName); // 

タイプ T は MessageText でした。ラムダ式を構築しようとしています

t=>t.PropName

明らかに私はDocu http://www.lcs.syr.edu/faculty/fawcett/handouts/CoreTechnologies/CSharp/samples/CSharpSamples/LinqSamples/DynamicQuery/Dynamic%20Expressions.htmlを理解していません

ParseLambda を呼び出す方法を誰か説明できますか?

4

1 に答える 1

2

resharper Decompile sources のおかげで...

var propLambda = 
System.Linq.Dynamic.DynamicExpression.ParseLambda<T, String>("t=>t." + PropertyName);

機能するオプションを見つけました。

var propLambda = 
System.Linq.Dynamic.DynamicExpression.ParseLambda<T, String>(PropertyName);

アイデンティティ x=>x. プロパティのみが指定された場合に追加されます。この API を学びたいかどうかはわかりません :-) でも、コンセプトは気に入っています...

于 2013-03-13T16:29:37.973 に答える