이 질문의 반대쪽을 꽤 많이 보았지만 내가하고 싶은 것을하는 방법을 보지 못했습니다.런타임시 C#에서 속성의 문자열 표현을 가져옵니다.
한다고 가정 나는 다음과 같은 코드가 있습니다
나는이 클래스에 데이터 바인딩을하고자하는 경우var myNewData = from t in someOtherData
select new
{
fieldName = t.Whatever,
fieldName2 = t.SomeOtherWhatever
};
, 내 열 정의는 "fieldName에"와 "fieldName2"와 같은 하드 코딩 된 문자열을 포함해야합니다.
반사 또는 다른 것을 호출하여 아래 코드와 동등한 작업을 수행 할 수있는 방법이 있습니까? (아래 코드는 유효하지 않지만 유효한 해결책을 찾고 있습니다).
string columnName = GetPropertyName(myNewData[0].fieldName);
내 목표는 익명의 클래스에 변수 이름 변경, 컴파일 타임 오류가 올 것입니다 경우 모든 참조 런타임까지 확인되지 않은 문자열에 의존하는 현재의 바인딩 데이터와는 달리 고정 될 때까지이다 .
도움을 주시면 감사하겠습니다.
이것은 정확히 내가 찾고있는 것입니다. 감사. – gwerner
+1 영리한 접근! 필드를 메서드에 전달할 생각이라면 값에 대한 참조 만 전달되므로 전달 된 필드의 이름을 찾을 기회가 없습니다. 그러나 람다를 통해 표현식 트리를 전달하면 그 문제가 해결됩니다. 쿨 솔루션 :) –