나는 다음과 같은 확장 방법이 있습니다 강력한 입력을 제공하는 대신 문자열의 속성 이름을 전달할 때linq 표현식에서 정보를 검색 할 때 리플렉션이 사용됩니까?
public static string ToPropertyName<T,E>(this Expression<Func<E, T>> propertyExpression)
{
if (propertyExpression == null)
return null;
string propName;
MemberExpression propRef = (propertyExpression.Body as MemberExpression);
UnaryExpression propVal = null;
// -- handle ref types
if (propRef != null)
propName = propRef.Member.Name;
else
{
// -- handle value types
propVal = propertyExpression.Body as UnaryExpression;
if (propVal == null)
throw new ArgumentException("The property parameter does not point to a property", "property");
propName = ((MemberExpression)propVal.Operand).Member.Name;
}
return propName;
}
내가 LINQ 식을 사용하고 난 문자열로 속성의 이름을 검색에이 기능을 사용합니다. 이 방법은 리플렉션을 사용합니까?
내가 묻는 이유는이 방법이 코드에서 상당히 많이 사용 되었기 때문에 내가 충분히 합리적인 속도로 전달되기를 바랍니다.
http://stackoverflow.com/questions/4803272/in-c-is-expression-api-better-than-reflection?lq=1 – nawfal
[λ 표현식 기반 반사 대 정상 반사] 가능한 중복 (http : // stackoverflow.com/questions/2697655/람다 식 기반 반사 대 정상 반사) – nawfal