有没有办法在没有直接指定的情况下创建与另一个类相同类型的类

时间:2010-10-07 23:47:49

标签: c#-4.0

我有扩展方法,可以做这样的事情

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

我想知道是否有办法新建与传入的上下文相同类型的上下文而不是指定MyEntitiesContext?

提前致谢

1 个答案:

答案 0 :(得分:2)

如果你不介意反思:

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();
}