我在试着把长码变短。原始代码执行以下操作:
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>,以实现对表执行所有相同操作的方法。
我只是想把类似的代码放到一个方法中,有没有人有好主意?
提前谢谢你,
Yoo
发布于 2010-08-02 16:04:14
泛型?
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);发布于 2010-08-02 15:40:02
您应该能够使用.Cast<SomeCommonType>来获取它们的IEnumerable<T>?假设有共性。
否则,也许只使用IEnumerable?(非通用)
https://stackoverflow.com/questions/3385782
复制相似问题