Получить конкретный тип из Object DataSource и использовать эту переменную типа в операции приведения
У меня есть
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 и присваивает ему значение типа "Питер"?
3 ответа
Не могли бы вы реорганизовать класс для использования обобщений? так что у вас есть источник данных общего типа?
Вы можете точно определить свой тип по
if (DataSource is IList)
{
...
}
else if (DataSource is DataTable)
{
...
}
так далее
Но если DataSource не является универсальным, вы не сможете выполнить такое приведение, как вы указали. Вы можете привести его, когда его тип указан в качестве параметра.
Вы можете получить доступ к собственности, написав
PropertyInfo pi = DataSource.GetType().GetProperty(DisplayMember);
pi.SetValue(DataSource, "Peter");