【发布时间】:2016-02-22 10:45:03
【问题描述】:
之前我想为长标题道歉,但我没有找到更短的版本。
我有一个抽象基类,它提供通用方法来访问测试类中的函数,这些函数派生自我的基类。
我有一个类集合,这些类本身具有对这些测试类的引用。
结构是:
// A really simplified example for my manager
Collection<AbstractBaseClass> Manager = new Collection<AbstractBaseClass>
{
TestClassA();
TestClassB();
}
现在我需要在不知道该集合中的哪个测试类的情况下杀死并重新创建测试类集合中的实例。
我尝试做某事。喜欢(伪代码)
Manager[0] = null;
Manager[0] = new (object)Manager[0].GetType();
我已经偶然发现了 Get a new object instance from a Type,但这 - 然而 - 不起作用,因为 CreateInstance 不是 System.Activator 的成员。我也找不到 ObjectType 类。
长解释,短问题:如何从我只有一个实例的类创建一个新实例?
非常感谢,ADP。
【问题讨论】:
-
如果
T类型的实例仅在运行时已知,则无法构造它。 -
Activator类有 方法CreateInstance。请参阅MSDN。在您的代码中搜索拼写错误/缺少的引用。 -
您需要使用
Activator.CreateInstance。您应该能够弄清楚您拥有的对象的实际类型。但老实说,看起来你正在过度设计某些东西,应该有更简单的做事方式。如果您描述您想要实现的目标,可能会有更简单的解决方案。 -
太奇怪了!我关闭了IDE,再次打开它,错误消失了。我已经尝试了 3 次,但它没有改变任何东西.... VS2015 充满了错误,太可怕了! ...
-
@oleksii:我想你是对的。我的问题是,我的程序从未打算重复任何内容。但是我的老板进来说“我们得到了这个可重复的”......
标签: c# reflection