1

以下のコードを修正してください。私がしたいのは、文字列式と文字列 [] パラメータをこのメソッドに渡し、式をコンパイルしてリスト内の個々の項目に適用することです。

  public static IEnumerable<T> ForEach<T>(this IList<T> source, string expression, params object[] values)
  {
       if (source == null) throw new ArgumentNullException("source");
       if (expression == null) throw new ArgumentNullException("expression");
       var enumerableList = source.AsEnumerable<T>();

        return (from T item in source
            select (T) DynamicLambdaExpression.ParseLambda(item.GetType(), typeof(T), expression, values).Compile().DynamicInvoke(item));


  }

そのままでは、式が適用されている可能性がありますが、各操作から返される型は、私が期待する型ではありません。実行すると例外が発生するため、わかりません。

<IfTrue Expression="it.UID = @0 + it.index.ToString(@1)" Parameters="000000 D6"/>

私が取得し続けるエラーメッセージは言う

System.Linq.Dynamic.ParseException が発生しました HResult=-2146233088 メッセージ = タイプ 'IProductDetail' の式が必要です ソース = 動的位置 = 0 StackTrace: System.Linq.Dynamic.ExpressionParser.Parse(Type resultType) で

そのため、コードを修正し、何が間違っていたかを説明していただければ幸いです。前もって感謝します。

4

1 に答える 1