Использование отражения копирует свойства объекта в другой объект - PullRequest
1 голос
/ 17 марта 2011

HI,

У меня есть код ниже, но я получаю ошибку "объект не соответствует типу цели" в операторе prop.SetValue.Но оба типа Int32.

    private UniqueProjectType CreateUniqueProjectType(TBR.Domain.Project project)
    {
        UniqueProjectType type = new UniqueProjectType();

        foreach (PropertyInfo prop in type.GetType().GetProperties())
        {
            if (prop.Name == "ID")
            {}
            else if (prop.Name == "PayFrequency")
                type.PayFrequency = _tbrService.GetEmployee((int)project.EmployeeID).PayFrequency;
            else
                prop.SetValue(type, prop.GetValue(project, null), null);

        }

        return type;
    }

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Я думаю, вы должны вызвать GetValue для PropertyInfo, соответствующего типу проекта.Экземпляры PropertyInfo привязаны к определенному типу.

По сути, для каждой информации свойства типа UniqueProjectType необходимо искать PropertyInfo для типа Project с тем же именем.Затем вы вызываете GetValue и SetValue для двух объектов, используя их соответствующие PropertyInfo.

2 голосов
/ 17 марта 2011

Я думаю, что здесь есть одна загвоздка:

prop.GetValue(project, null);

prop относится только к UniqueProjectType, в то время как project имеет тип TBR.Domain.Project.Я думаю, вы должны получить все свойства TBR.Domain.Project и найти то, что имеет соответствующее имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...