将反射复制对象属性用于另一个对象

时间:2011-03-17 11:44:03

标签: c# reflection

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 个答案:

答案 0 :(得分:2)

我认为这是一个问题:

prop.GetValue(project, null);

prop特定于UniqueProjectType,而projectTBR.Domain.Project类型。我认为你应该得到TBR.Domain.Project的所有属性并找到一个具有相应名称的属性。

答案 1 :(得分:2)

我认为您应该在与Project类型对应的PropertyInfo上调用GetValue。 PropertyInfo实例绑定到特定类型。

基本上,对于UniqueProjectType类型的每个属性信息,您必须在Project类型上查找具有相同名称的PropertyInfo。然后使用相应的PropertyInfo为这两个对象调用GetValue和SetValue。