2009-03-20 5 views
0

는이 전 다음과 같은 위임을한다고 가정 해 봅시다 "FailingTest"라는 이름을 얻으시겠습니까?사용 반사 대리자 필드의 이름을 찾을 수

은 지금까지 나는 시도했다 :

var possibleFields = typeof(TestClass).GetFields(relevant_binding_flags) 
          .Where(x => x.FieldType.Equals(typeof(Example))); 

foreach(FieldInfo oneField in possibleFields) { 
    // HERE I am able to access the declaring type name 
    var className = oneField.ReflectedType.Name; // == "TestClass" 

    // but I am not able to access the field 
    // name "FailingTest" because: 
    var fieldName = oneField.Name; // == "CS$<>9__CachedAnonymousMethodDelegate1" 
} 

디버거를 통해 스테핑, 나는 선언 된 필드, "FailingTest"의 이름에 대한 경로를 찾을 수 없습니다입니다.

런타임에 정보가 유지되거나 익명의 대리인이 할당되면 정보가 손실됩니까?

답변

3

무엇이 BindingFlags입니까? GetFields에 전달 하시겠습니까? 나는 이것을 다음과 같이 사용했다.

BindingFlags.NonPublic | BindingFlags.Instance 

나는 필드의 이름을 볼 수 있었다.

+0

VS2008SP1을 사용하여 동일한 결과를 얻었습니다. – Andy

+0

그건 나를 위해 일했습니다; 어떻게 든 BindingFlags.Instance를 놓친 다음 Type에서이 정보를 얻으 려하고 익명 메소드 값을 읽습니다. 인스턴스를 사용하여 트릭을했습니다. 감사! –

관련 문제