C#获取用户创建类实例

问题描述:

如果有一个像'Painter'这样的类,并且需要用户能够创建这个类@ runtime的实例或实例,那么最好的方法是什么?C#获取用户创建类实例

所以每次用户点击一个按钮,我们需要一个新的画家对象?

或每次用户输入'新的画家',我们需要一个新的画家实例?

+0

所有对象实例都是在运行时通过调用类型构造函数来创建的。你需要详细说明你的问题。你是否试图让用户输入将被动态评估的C#代码? – 2009-12-11 08:50:29

可以使用Type.GetType得到一个string一个Type

一旦你得到了Type对象,你可以调用Activator.CreateInstance来实例化它,或者调用Type.GetConstructors,选择一个合适的构造函数然后调用它。

两个“陷阱”关于Type.GetType,顺便说一句:

  • 你必须包括在类型名称
  • 除非类型是在当前执行的程序集或mscorlib,你需要指定命名空间集名称以及与版本信息,如果它的强命名

如果你有问题的程序集的引用,然后Assembly.GetType可以是一个更简单的方法 - 但仍需要包含名称空间。

+0

“版本信息如果是强类型的”应该是“版本信息,如果它强烈地命名为” – 2009-12-11 09:06:47

+0

@AZ:谢谢,现在修复。 – 2009-12-11 09:24:26

我猜你的问题的要点是在用户输入之前,类的类型是未知的。否则,如果你想在每个按钮点击一个新的Painter类,你可以简单地处理按钮点击并执行“var newpainter = new Painter();”。

因此,假设您需要动态创建未知类型的实例,则可以使用反射在运行时执行此操作。

var newpainter = Activator.CreateInstance(Type.GetType("Painter"), args);