首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Activator创建实例

使用Activator创建实例
EN

Stack Overflow用户
提问于 2012-10-14 01:33:03
回答 4查看 276关注 0票数 2

假设我们有一些类

代码语言:javascript
复制
class Class1{ }
class Class2{ }
class Class3{ }

我有一个Type变量

代码语言:javascript
复制
Type t = /*some type unknown at compile-time*/;

变量t为Class1、Class2或Class3。我想创建一个该类的实例。据我所知,我可以使用以下语句:

代码语言:javascript
复制
object instance = Activator.CreateInstance(t);

但我收到了一个对象。问题是:如何将这个对象转换为变量t中的类型。或者,有些人可以建议一种解决方法。谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-14 01:37:31

除非有一些共同的基类或接口,否则你不能--你能叫它的只有"object“。考虑让它们都实现一个接口,并转换为该接口。

票数 3
EN

Stack Overflow用户

发布于 2012-10-14 01:36:39

如果您希望避免反射,那么

代码语言:javascript
复制
public interface IClass { }
class Class1 : IClass { }
class Class2 : IClass { }
class Class3 : IClass { }

IClass instance = (IClass)Activator.CreateInstance(t);
票数 5
EN

Stack Overflow用户

发布于 2012-10-14 01:56:27

您可以使用dynamic关键字:

代码语言:javascript
复制
dynamic instance = Activator.CreateInstance(t);

这就像使用object一样,但在这种情况下,只有在运行时才知道它的类型,所以在你没有运行你的程序之前,它支持所有的东西。在处理反射时,这是很常见的。

有关更多信息,请访问look here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12875204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档