Я реализую метод, который, учитывая некоторые данные, полученные через DataRowView или DbDataReader, гидратирует DTO.
Таким образом, оба источника данных реализуют возможность извлечения значения определенного поля через
public object this[string name] { get; }
Но это поведение не ограничено общим интерфейсом между двумя классами, поэтому я не могу его использовать, и мне приходится писать код гидратации дважды, не меняя ни одного бита. Что плохо.
public MyDTO Hydrate(DataRowView data)
{
MyDTO f_return = new MyDTO();
f_return.Foo = (string)data["foo"];
f_return.Bar = (uint)data["bar"];
f_return.Baz = (DateTime)data["baz"];
return f_return;
}
public MyDTO Hydrate(DbDataReader data)
{
MyDTO f_return = new MyDTO();
f_return.Foo = (string)data["foo"];
f_return.Bar = (uint)data["bar"];
f_return.Baz = (DateTime)data["baz"];
return f_return;
}
Мне не хватает некоторого синтаксиса C #, который позволил бы мне определить один метод, который ограничивает ввод для любого объекта, к которому можно получить доступ через квадратные скобки?
как то так
public MyDTO Hydrate(object[string] data)
Заранее спасибо!