Есть ли способ создать новый класс того же типа, что и другой класс, не указав его напрямую - PullRequest
0 голосов
/ 08 октября 2010

У меня есть метод расширения, который делает что-то вроде этого

public static void DoStuff(this ObjectContext context)
{
    using(var newContext = new MyEntitiesContext())
    {
        // do stuff
        newContext.SaveChanges();
    }
    context.SaveChanges();
}

Мне было интересно, есть ли способ передать контекст того же типа, что и контекст, переданный вместо указания MyEntitiesContext?

Заранее спасибо

1 Ответ

2 голосов
/ 08 октября 2010

Если вы не возражаете против отражения:

var context = Activator.CreateInstance(context.GetType());

Теперь вам нужен либо базовый тип, либо - если вы все еще не против отражения - вы можете просто вызвать метод по имени. Или, поскольку вы используете C # 4, вы можете использовать динамический.

Редактировать: Вы также можете пойти по этому пути:

public static void DoStuff<T>(this T context) where T : ObjectContext, new()
{
    using(var newContext = new T())
    {
         // do stuff
        newContext.SaveChanges();
    }
    context.SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...