2013-07-19 3 views
6

나는 TypeDescriptor를 통해 개체의 인덱서에 대한 정보를 얻기 힘든 시간을 보내고 있어요 단지 확인하기 위해, 나는 그런 종류의 의미 :개체의 인덱서는 TypeDescriptor를 통해 어떻게 든 액세스 할 수 있습니까? -

class ComponentWithIndexer 
{ 
    public string this[int i] 
    { 
     get { return "hello"; } 
    } 
} 

당신이 Typedescriptors 사용자 정의와 WPF에서 바인딩에 영향을 미칠 수 있기 때문에 및 WPF에서 인덱서에 바인딩 할 수 있기 때문에 (예 : {Binding [12]) 인덱서의 정보를 유형 설명자를 통해 사용할 수 있는지 궁금합니다. 그래서 정보는 어디에 숨겨지며 거기에 숨기지 않으면 인덱서에 대한 WPF 바인딩이 어떻게 작동합니까?

답변

4

짧은 대답은, 아니 - 당신은 TypeDescriptor

긴 대답을 통해 인덱서에서 얻을 수없는 - 당신 수 없습니다 - 깊은 아래로 TypeDescriptor 엉망 - 오 - 클래스의 창자에서, 거기 GetProperties 호출에 대한 집계 속성에 대한 반사 호출. 이 코드가에서 :

for (int i = 0; i < properties.Length; i++) 
{ 
    PropertyInfo propInfo = properties[i]; 
    if (propInfo.GetIndexParameters().Length <= 0) 
    { 
     MethodInfo getMethod = propInfo.GetGetMethod(); 
     MethodInfo setMethod = propInfo.GetSetMethod(); 
     string name = propInfo.Name; 
     if (getMethod != null) 
     { 
      sourceArray[length++] = new ReflectPropertyDescriptor(type, name, propInfo.PropertyType, propInfo, getMethod, setMethod, null); 
     } 
    } 
} 

0 인덱스 매개 변수에 대한 검사가 중요한 부분 -이 인덱서가있는 경우, 그것을 건너 뜁니다. :

+0

슬픈 ... 나는 인덱서에 바인딩하는 것이 유형 설명자가 정보를 제공 할 수 없기 때문에 일종의 해킹이어야합니다. – flq

+0

@flq 가능성 - 확인을 위해 주변을 파고 가야하지만 이유가 있습니다. – JerKimball