我目前有一个自定义控件
class MyControl : CompositeControl {
Foo Entity { get; set; }
string PropertyName { get; set;}
//...
protected override void OnLoad(EventArgs e)
{
var v = typeof(Foo).GetProperty(PropertyName).GetValue(Entity);
//...
var _ = Entity.OtherProperty;
//...
}
}
//and a class
class Foo {
string Bar { get ;set; }
string OtherProperty { get; set; }
}
我在页面中可以做的就是将此控件用作
<MyControl id="myControl" Entity="<%# MyEntity %>" PropertyName="Bar"></MyControl>
当然MyEntity是页面上的受保护属性
protected Foo MyEntity { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack) return;
MyEntity = new Foo { Bar = "Hello World" OtherProperty="..." };
}
我想做的就是像这样
<MyControl id="myControl" Property="<%# MyEntity.Bar %>" ></MyControl>
但是,以某种方式,MyControl仍可以同时知道实体(Foo对象)和PropertyName(“ Bar”)。
我必须仍然能够在控件中做
var v = typeof(Foo).GetProperty(PropertyName).GetValue(Entity);
//...
var _ = Entity.OtherProperty;
或类似。