2016-10-04 2 views
0

내가 수행하려고 시도하는 것은 런타임에 응용 프로그램의 현재 컨텍스트에서 일부 속성을 동적으로 설정하는 것입니다.현재 컨텍스트에서 속성을 동적으로 설정합니다.

예 :

의 내가 웹 페이지를 실행하고하고 페이지로드 이벤트 내에서, 나는 동적으로 컨트롤의 속성 설정하려는 가정 해 봅시다 - 재산 나는 그것이 DB 또는 외부 리소스에 저장된.

리플렉션을 사용해 보았지만 런타임이 아닌 컴파일 타임에 기존 개체를 가리켜 야하므로 작동하지 않습니다. 코드 예제 :

string propertyName = "RadTabStrip1.Tabs[0]"; 
    string propertyValue = "Bla bla"; 

    Type t = typeof(RadTab); 
    t.InvokeMember("Text", BindingFlags.SetField | BindingFlags.SetProperty, null, propertyName, new object[] { propertyValue }); 

반사, codedome 또는 LINQ 식 중 하나를 사용하여이를 달성 할 수있는 방법이 있나요?

CodeDom을 사용하면 CodeDom을 사용하면 현재 컨텍스트 외부에서 실행되므로 현재 컨텍스트 컨트롤/개체에 액세스 할 수 없다는 점을 제외하고는 상당히 쉽습니다. 어떤 종류의 ref 매개 변수를 코드 롬과 함께 사용할 수 있습니까?

답변

0

내가보기에 단순히 반사를 사용할 수 있습니다. 사실이

var tab = new RadTab(); // i guess you have that object reference somewhere else 
var type = typeof(RadTab); 
type.GetProperty(propertyName).SetValue(tab, propertyValue); 
+0

처럼 RadTabStrip 그것은 RadTabStrip1.Tabs가 ICollection에 (목록) 내가 동적 같은 목록의 첫 번째 항목의 텍스트 속성을 설정해야합니다 동안 Telerik 컨트롤의 : RadTabStrip1.Tabs [0]. 텍스트 = 값; – Sergiu

관련 문제