0

我有一个

public object DataSource {get;set} and a public string DisplayMember {get;set}

该对象可以采用 IList 或 CustomerListDataSet 之类的所有内容。

我不知道用户将在 DataSource 中设置什么。

我试过这个

Type myType = DataSource.GetType().UnderlyingSystemType;

??? myUnknownObjectInstance = (mytype)DataSource;

我想即使反射访问 myUnknownObjectInstance.PropertyNameFromDisplayMember 并为其分配一个像 "Peter" 这样的值也是不可能的?

4

3 回答 3

0

你能重构类以使用泛型吗?以便您拥有泛型类型的数据源?

于 2011-01-11T10:15:34.100 回答
0

您可以通过 a 明确确定您的类型

if (DataSource is IList)
{
 ...
}
else if (DataSource is DataTable)
{
...
}

ETC

但是,如果 DataSource 不是通用的,那么您就无法像您指定的那样进行强制转换。当它的类型被指定为参数时,您可以强制转换它。

您可以通过编写访问属性

PropertyInfo pi = DataSource.GetType().GetProperty(DisplayMember);
pi.SetValue(DataSource, "Peter");
于 2011-01-11T10:16:37.823 回答
0

我想你只需要DataSource.GetType()

于 2011-01-11T10:17:04.627 回答