Хорошо, я новичок в c # и кодировании, и я пытаюсь сделать универсальный метод для преобразования в dto (все еще не пробовал, если он работает в обратном порядке), но я столкнулся с проблемой преобразования свойств навигации, илиобъекты, которые имеют вложенные объекты.Я попробовал какой-то код, который нашел здесь и там, но ни одно из предложенных не решило мою проблему.
Как я мог понять, мое решение в значительной степени основано на рефлексии, и я попытался сделать что-то вроде obj.GetType () .GetProperties (). GetType (). GetProperties (), но, конечно, не получается.
вот мой код
public static T SimpleDTOConverter<T>(object obj) where T : new()
{
T dto = new T();
foreach (var dtoProp in dto.GetType().GetProperties())
{
foreach (var objProp in obj.GetType().GetProperties())
{
if (dtoProp.Name == objProp.Name)
{
object objValue = objProp.GetValue(obj);
dtoProp.SetValue(dto, objValue);
}
}
}
return dto;
}
, когда я вызываю SimpleDTOConverter (someObj), он отлично работает, скажем, для простых объектов, но выдает исключение для вложенных ... пытался вложить, если частьв блоке try-catch и в блоке catch вызвать SimpleDTOConverter, но я не могу, потому что я не знаю тип для T, и я не могу передать dtoProp как тип, поскольку он является переменным ... некоторые варианты, которые я пытался вернуть, навигациюобъект свойства установлен в нуль, но я не могу вспомнить, что я пробовал среди всего кода, который я пробовал ...