我正在尝试缩短代码。原始代码执行以下操作:
using (var context = new DataEntities())
{
context.Table1.Foreach(x =>{
// Omit ... updating UI
DoSomething(x);
// Omit ... updating UI
});
context.Table2.Foreach(x =>
{
// Omit ... updating UI
DoSomething(x);
// Omit ... updating UI
});
context.Table3.Foreach(x =>
{
// Omit ... updating UI
DoSomething(x);
// Omit ... updating UI
});
// continue...
}
如你所见,这里有很多类似的代码。所以,我认为我应该重构它,这对我来说很难,因为我无法将context.Table1转换为任何东西,例如,将context.Table1强制转换为ObjectSet<EntityObject>
以实现执行所有相同操作的方法对于表格。
我只是想将类似的代码放入方法中,有没有人有个好主意?
提前致谢,
柳
答案 0 :(得分:3)
泛型?
private void DoSomethingWithAnyTable<T>(ObjectSet<T> table) where T : EntityObject
{
table.Foreach(x =>{
// Omit ... updating UI
DoSomething(x);
// Omit ... updating UI
});
}
然后
DoSomethingWithAnyTable(context.Table1);
DoSomethingWithAnyTable(context.Table2);
DoSomethingWithAnyTable(context.Table3);
答案 1 :(得分:2)
您应该可以使用.Cast<SomeCommonType>
来获取IEnumerable<T>
个帖子吗?假设是的共性。
否则;也许只是IEnumerable
? (非通用)