Есть ли способ приведения ObjectSetв ObjectSet <EntityObject>? - PullRequest
1 голос
/ 02 августа 2010

Я пытаюсь сделать длинные коды короткими. Оригинальные коды делают что-то следующее:

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

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Дженерики

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);
2 голосов
/ 02 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...