LambdaExpression을 문자열로 변환하는 메서드가 있습니다. 이러한 문자열을 캐시의 키로 사용합니다.값을 포함한 LambdaExpression을 문자열로 변환
string p = "x";
var a = LambdaToString<MyType>(m => m.P == p);
이 다르다 그러나
string p = "y";
var a = LambdaToString<MyType>(m => m.P == p);
관계없이, P의 값과 동일한 출력을 생성한다 내 LambdaToString 방법의 현재 상태. 어느입니다 : 내가 내 LambdaToString 기능을 원하는 무엇
(MyType.P == value(ConsoleApplication1.Program+<>c__DisplayClass0).p)
는 등의 "X"또는 "Y"의 실제 리터럴 문자열로 표현의 "값 (클래스) .P"부분을 해결하는 것입니다 경우가있을 수 있습니다.
여기 내 LambdaToString 메서드의 현재 상태입니다. 나는 내가 원하는 출력 생산을 수정하려면 어떻게해야 될지 확실하지 않다 :
public static string LambdaToString<T>(Expression<Func<T, bool>> expression)
{
string body = expression.Body.ToString();
foreach (var parm in expression.Parameters)
{
var parmName = parm.Name;
var parmTypeName = parm.Type.Name;
body = body.Replace(parmName + ".", parmTypeName + ".");
}
return body;
}
물론'p'가'const' 변수 인 경우 이것은 자동으로 발생합니다 (변수는'