В настоящее время я работаю с некоторым кодом, который повторяется - более конкретно, с кодом, который имеет дело с созданием объектов моделей из DataRow
s и DataTable
s.Я думал, что было бы безопасно создать методы расширения, чтобы сократить этот повторяющийся код и добавить немного синтаксического сахара.
Что у меня было раньше (упрощенно):
public List<MyObject> GetThings(){
DataSet dataSet = SomeDatabaseCall();
var objects = new List<MyObject>();
foreach(DataRow row in dataSet.Tables[0].Rows){
//Process Row, create object, add to objects
}
return objects;
}
public MyObject GetThing(int id){
DataSet dataSet = SomeDatabaseCall(id);
DataRow row = dataSet.Tables[0].Rows[0];
//Process Row, create object, return it
}
Что я хочу После:
public List<MyObject> GetThings(){
DataSet dataSet = SomeDatabaseCall();
return dataSet.ToMyObjects(); //Internally calls the ToMyObject for each row
}
public MyObject GetThing(int id){
DataSet dataSet = SomeDatabaseCall(id);
DataRow row = dataSet.Tables[0].Rows[0];
return row.ToMyObject();
}
Проблема:
Мне было указано, что использование методов расширения в этомпуть опасен, и я должен использовать простые статические функции, которые вместо обработки * обрабатывают данные DataRow
(по существу, это метод расширения без параметра this
).
Вопрос:
Могут ли методы расширения иметь смысл в этом сценарии?И почему такой способ действий считается опасным?