PropertyInfo SetValue Преобразование типов - PullRequest
1 голос
/ 25 августа 2011

У меня проблема с методом UniversalConverter. Строка, полученная из базы данных, должна быть передана объекту. Таким образом, строка [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 Ответ

1 голос
/ 25 августа 2011

Вам нужно или что-то вроде Automapper

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

Надеюсь, это поможет.

...