PropertyInfo SetValue类型转换

时间:2011-08-25 10:57:44

标签: c# reflection propertyinfo

我遇到了UniversalConverter方法的问题。从数据库接收的行应该转移到实体。因此必须将row [pi.Name]转换为实体类型。如何执行此操作?

public void GetRequestSummary(string UserName, string Password)
    {
        List<EducationRequest> requestSummary = new List<EducationRequest>();
        OracleCommand command = new OracleCommand();

        AddParameter(command, _usernamePN, DbType.String, UserName);
        AddParameter(command, _passwordPN, DbType.String, Password);
        AddOracleCursor(command, _curPN, OracleType.Cursor, ParameterDirection.Output); 

        command.CommandType = CommandType.StoredProcedure;

        DataSet personaSet =
            FillDataset(command, _GetRequestSummaryCmd);

        DataTable personaTable =
            personaSet.Tables[0];

        var request = new EducationRequestSummary();
        foreach (DataRow row in personaTable.Rows)
        {
            UniversalConverter(request, row);
        }

        //any implementation

    }

public void UniversalConverter<T>(T entity, DataRow row)
    {

        foreach (var pi in typeof(T).GetProperties())
        {
            pi.SetValue(entity, row[pi.Name], null);
        }
    }

1 个答案:

答案 0 :(得分:1)

您需要或类似Automapper

或者您需要手动映射此对象,即使使用代码中提供的反射也是如此。在那种情况下,Kepp明显注意属性名称和类型。

希望这有帮助。