Универсальный dto конвертер - как конвертировать свойство навигации - PullRequest
0 голосов
/ 02 июля 2019

Хорошо, я новичок в 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 как тип, поскольку он является переменным ... некоторые варианты, которые я пытался вернуть, навигациюобъект свойства установлен в нуль, но я не могу вспомнить, что я пробовал среди всего кода, который я пробовал ...

...