假设我们有一些类
class Class1{ }
class Class2{ }
class Class3{ }我有一个Type变量
Type t = /*some type unknown at compile-time*/;变量t为Class1、Class2或Class3。我想创建一个该类的实例。据我所知,我可以使用以下语句:
object instance = Activator.CreateInstance(t);但我收到了一个对象。问题是:如何将这个对象转换为变量t中的类型。或者,有些人可以建议一种解决方法。谢谢
发布于 2012-10-14 01:37:31
除非有一些共同的基类或接口,否则你不能--你能叫它的只有"object“。考虑让它们都实现一个接口,并转换为该接口。
发布于 2012-10-14 01:36:39
如果您希望避免反射,那么
public interface IClass { }
class Class1 : IClass { }
class Class2 : IClass { }
class Class3 : IClass { }
IClass instance = (IClass)Activator.CreateInstance(t);发布于 2012-10-14 01:56:27
您可以使用dynamic关键字:
dynamic instance = Activator.CreateInstance(t);这就像使用object一样,但在这种情况下,只有在运行时才知道它的类型,所以在你没有运行你的程序之前,它支持所有的东西。在处理反射时,这是很常见的。
有关更多信息,请访问look here。
https://stackoverflow.com/questions/12875204
复制相似问题