从Object DataSource获取具体类型,并在强制转换操作中使用此类型变量

时间:2011-01-11 10:10:33

标签: c# reflection object types concrete

我有一个

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”这样的值,也是不可能的?

3 个答案:

答案 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()