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