在当前上下文中动态设置属性

时间:2016-10-04 08:28:55

标签: c# linq reflection codedom

我想要实现的是在应用程序的当前上下文中在运行时动态设置一些属性。

例如:

让我们说我正在运行一个网页,在页面加载事件中,我想动态设置一个控件的属性 - 我将它存储在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 });

有没有办法通过使用反射,编码组或LINQ表达式实现这一目的?

使用CodeDom可以很容易地实现,除非我使用CodeDom,它将在当前上下文之外执行,这意味着我将无法访问当前上下文控件/对象。是否可以使用某种ref参数与codedom?

1 个答案:

答案 0 :(得分:0)

从我看到你可以简单地使用反射f.e.像这样

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