动态传递对象类型

时间:2012-09-19 13:11:14

标签: c#

我的代码在使用

中有[Ent]
 public static void Retion()
        {

            using (Ent entitiesContext = new Ent())
                {...}
         {

我需要动态传递[Ent],如下所示:

 public static void Retion(Type ds)
            {

                using (ds entitiesContext = new ds())
                    {...}
             {

这当然不起作用。如何更改它以便我可以动态传递它?

4 个答案:

答案 0 :(得分:3)

也许通过泛型:

public static void Retion<T>() where T : IDisposable, new()
{
    using (T entitiesContext = new T())
    {...}

然后Retion<Ent>()

请注意,要使用entitiesContext执行任何有用的,您可能还需要一些基类限制,即

public static void Retion<T>() where T : DataContext, new()
{
    using (T entitiesContext = new T())
    {...}

当然,那与以下内容并无太大区别:

public static void Retion(Type type)
{
    using (DataContext entitiesContext = 
        (DataContext)Activator.CreateInstance(type))
    {...}

答案 1 :(得分:3)

怎么样

   public static void Retion<T>() where T : IDisposable, new()
   { 

            using (T entitiesContext = new T()) 
                {...} 
   }

答案 2 :(得分:0)

public static void Retion&lt; T>(T ds)其中T:new()             {

            using (T entitiesContext = new T())
                {...}
         {

答案 3 :(得分:0)

你可以通过反射来调用构造函数