我有一个
public object DataSource {get;set} and a public string DisplayMember {get;set}
该对象可以采用IList或CustomerListDataSet之类的所有内容。
我不知道用户将在DataSource中设置什么。
我试过这个
Type myType = DataSource.GetType().UnderlyingSystemType;
??? myUnknownObjectInstance = (mytype)DataSource;
我想即使使用Reflection访问myUnknownObjectInstance.PropertyNameFromDisplayMember并为其分配一个像“Peter”这样的值,也是不可能的?
答案 0 :(得分:0)
你可以重构这个类来使用泛型吗?这样你就拥有了泛型类型的数据源?
答案 1 :(得分:0)
您可以通过
明确确定您的类型if (DataSource is IList)
{
...
}
else if (DataSource is DataTable)
{
...
}
等
但是如果DataSource不是通用的,那么就没有办法像你指定的那样进行转换。当类型被指定为参数时,您可以将其强制转换。
您可以通过编写
来访问媒体资源PropertyInfo pi = DataSource.GetType().GetProperty(DisplayMember);
pi.SetValue(DataSource, "Peter");
答案 2 :(得分:0)
我认为你只需要DataSource.GetType()