У меня есть две общие функции. В первом я заполняю словарь, а затем вызываю следующую общую функцию для преобразования словаря в объект.Как вернуть динамический объект из общей функции - ошибка
Здесь мне нужно вернуться к общему объекту T
, а не указывать на конкретный. Я не могу этого добиться. Он показывает сообщение об ошибке:
The type T must be a reference type in order to use it as a parameter "T" in the generic method or type..
public T Fill<T>()
{
Dictionary<string,string> d = new Dictionary<string,string>();
//filled dictionary -----
SomeClass dObject = ToObject<SomeClass>(d);
//[---Here I need to return a dynamic object rather than fixing to SomeClass--]
T dObject = ToObject<T>d); ///* Not able to acheive this *///
return (T)Convert.ChangeType(dObject, typeof(T));
}
private T ToObject<T>(IDictionary<string, string> dict)
where T : class,new()
{
T t = new T();
PropertyInfo[] properties = t.GetType().GetProperties();
//--- code to convert object to dictionary
return t;
}
Вам нужно добавить ограничения 'class' и' new() 'в метод' Fill', чтобы он соответствовал функции 'ToObject '. –
DavidG
Я добавил его сейчас - public T Fill(), где T: class, new(), но все равно такая же ошибка –
Нет, теперь у вас другая ошибка, потому что 'dObject' объявляется дважды. – DavidG