2009-09-30 7 views
1

좀 기지 "고양이"가 인터페이스 "IGWUIElement"을 구현, "자동차", "개"객체가 있습니다. 목록으로 myList : 나는 이러한 인터페이스의 목록을 가지고있다. 인터페이스의 일부가 아닌) - 내 요소의 목록을 런타임 I 루프에서 내가 속성을 채울 필요 (반사를 사용) 클래스의 이름을 검사하여어떻게 객체 인스턴스에 반사를 사용하여 메소드를 호출하는?

. 나는 XML 문서가 propeties을 descripting이 있고 값은 내가 그들에게 할당해야합니다. 다음은 인터페이스 인스턴스입니다.

IGWUIElement newUIElement = (IGWUIElement)Activator.CreateInstance(result); 

특정 값을 사용하여 이름에서 속성을 호출하는 방법 (데이터 유형은 int 및 string으로 제한됩니다.) 각 객체는 다른 속성을가집니다. 이 의미있게

희망 ...

/H4mm3r

답변

5

사용 PropertyInfo.SetValue() msdn

PropertyInfo piInstance = typeof(IGWUIElement).GetProperty("property_name"); 
piInstance.SetValue(newUIElement, value, null); 

더.

4

당신과 같이이 작업을 수행 할 수 있습니다

IGWUIElement element = myList[0]; 

// Set a string property 
element.GetType().InvokeMember("SomeStringProperty", BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, element, "The String Value"); 

// Set an int property 
element.GetType().InvokeMember("SomeIntProperty", BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty, Type.DefaultBinder, element, 3); 
관련 문제