PropertyInfo.SetValue Объект не соответствует типу цели - PullRequest
3 голосов
/ 30 января 2012

У меня ошибка, аналогичная этой , но, к сожалению, это не то же самое простое решение.Вот код:

public virtual void MapObject(T obj, IViewModel<T> viewModel, ITPSDataAccess dataAccess)
{
    var objProps = obj.GetType().GetProperties();
    var dtoProps = viewModel.GetType().GetProperties();
    foreach (var dtoProp in dtoProps)
    {
        var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name);
        if (objProp != null)
        {
            var dtoVal = dtoProp.GetValue(viewModel, null);
            objProp.SetValue(obj, dtoVal, null); // ERROR HERE
        }
    }
     ...
}

Произошла ошибка в указанной точке с указанием «Объект не соответствует типу цели».Похоже, я передаю правильный объект для установки - поэтому я не могу решить проблему.

Я также попытался воспользоваться советом этого решения и проверитьтипы свойств, которые я пытаюсь установить, которые генерируют исключение - рассматриваемое свойство является строкой, и установщик, по-видимому, не нарушается, поскольку он работает в нормальных условиях без отражения.

1 Ответ

3 голосов
/ 30 января 2012

Ошибка, кажется, здесь:

var objProp = dtoProps.SingleOrDefault(x => x.Name == dtoProp.Name);

Я думаю, вы имели в виду:

var objProp = objProps.SingleOrDefault(x => x.Name == dtoProp.Name); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...