我目前正在处理一些重复的代码-更具体地说,这些代码用于处理从DataRow
和DataTable
创建模型对象的代码。我认为创建扩展方法来减少此重复代码并添加一些语法糖是安全的。
我之前所拥有的(简体):
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
参数的扩展方法)。问题:
在这种情况下,扩展方法是否有意义?为什么将这种做事方式视为危险?
最佳答案
我认为这样做没有任何危险;只要您可以控制所有代码,并且DataSet的布局不会从您的下方更改。这似乎完全像扩展方法设计的那样。
我很想知道这是“危险”用途的说法背后的原因。
关于c# - 我是否应该使用扩展方法来帮助从DataRow/Table创建模型对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4226690/