PropertyInfo SetValue Преобразование типов
У меня проблема с методом 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 ответ
Решение
Вам нужно или что-то вроде Automapper
или вам нужно отобразить эти объекты вручную, даже используя отражение, как вы указали в своем коде. Обращайте внимание на имена и типы свойств, очевидно, в этих случаях.
Надеюсь это поможет.