아래 코드를 수정 해주십시오. 필자가 원하는 것은 String Expression과 String [] Parameter를이 메서드에 전달하고 Expression을 컴파일하여 목록의 개별 항목에 적용합니다.동적 ForEach 루프가 객체를 업데이트합니다. 속성 값
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 : at System.Linq.Dynamic.ExpressionParser.Parse (결과 형식 입력)
코드 수정에 대한 도움을 주시면 감사하겠습니다. 내가 뭘 잘못했는지. 미리 감사드립니다.
어떤 오류가 발생하고 있습니까? – SLaks
목록의 각 항목에 대해 식을 다시 컴파일하지 마십시오. – SLaks
리턴 타입을 가지고 있다면 이것은'ForEach'보다'Select' 연산 (매핑)에 더 가깝습니다. 당신의 반환 유형은 당신이 표현식에 전달하는 것을 기반으로합니다 ... –