2010-08-02 4 views
1

Я пытаюсь сделать короткие коды короткими. Исходные коды делают что-то следующее:Есть ли способ лить ObjectSet <table1> в ObjectSet <EntityObject>?

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

ответ

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); 
+0

Это работает блестяще. Большое спасибо! –

2

Вы должны быть в состоянии использовать .Cast<SomeCommonType>, чтобы получить IEnumerable<T> из них? Предполагая там является прийти общность.

В противном случае; возможно, только IEnumerable? (не общие)

Смежные вопросы