Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类型对象的运行时强制转换_C#_Java_Generics_Casting_Runtime - Fatal编程技术网

C# 类型对象的运行时强制转换

C# 类型对象的运行时强制转换,c#,java,generics,casting,runtime,C#,Java,Generics,Casting,Runtime,我想在运行时实例化泛型类的对象;我调用一个返回类型对象的方法;我想将这个泛型类转换成一个特定的类,然后实例化这个类的对象。可能吗?我曾经用Java写过: Class<DBConnectionProvider> dBConnectionProviderClass = (Class<DBConnectionProvider>)Configuration.getInstance().getDbConnectionProviderClass(); C

我想在运行时实例化泛型类的对象;我调用一个返回类型对象的方法;我想将这个泛型类转换成一个特定的类,然后实例化这个类的对象。可能吗?我曾经用Java写过:

Class<DBConnectionProvider> dBConnectionProviderClass =
              (Class<DBConnectionProvider>)Configuration.getInstance().getDbConnectionProviderClass();
Class dBConnectionProviderClass=
(类)Configuration.getInstance().getDbConnectionProviderClass();

方法getDbConnectionProviderClass()返回在运行时转换的类对象;在我的C#应用程序中,此方法返回类型对象;是否可以在DBConnectionProvider中转换它并实例化它的一个类?谢谢您的回答。

一旦您有了类型对象,您只需要调用:

object o = Activator.CreateInstance([your type]).Unwrap();
或者,如果需要提供构造函数参数:

object o = Activator.CreateInstance([your type], obj1,obj2...).Unwrap();

然后转换为您的类型。

创建带有反射的类实例的简单示例(Java)


@driis“我曾经用Java写过:”有一个Java示例?如果我有一个泛型类扩展,比如Classyou是指类型对象,不是吗?如果我没有使用Class而是使用Class呢
import java.awt.Rectangle;

public class SampleNoArg {

   public static void main(String[] args) {
      Rectangle r = (Rectangle) createObject("java.awt.Rectangle");
      System.out.println(r.toString());
   }

   static Object createObject(String className) {
      Object object = null;
      try {
          Class classDefinition = Class.forName(className);
          object = classDefinition.newInstance();
      } catch (InstantiationException e) {
          System.out.println(e);
      } catch (IllegalAccessException e) {
          System.out.println(e);
      } catch (ClassNotFoundException e) {
          System.out.println(e);
      }
      return object;
   }
}