C#让用户创建类实例

时间:2009-12-11 08:45:12

标签: c# object

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

因此,每次用户点击按钮时,我们都需要一个新的画家对象?

或者每当用户输入“新画家”时,我们需要一个新的画家实例?

2 个答案:

答案 0 :(得分:5)

您可以使用Typestring获得Type.GetType

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

顺便说一下,Type.GetType有两个“陷阱”:

  • 您必须在类型名称
  • 中包含名称空间
  • 除非类型在当前正在执行的程序集或mscorlib中,否则您需要指定程序集名称以及带有版本信息的,如果它的名称是

如果您对相关程序集有引用,那么Assembly.GetType可能是一种更简单的方法 - 您仍需要包含命名空间。

答案 1 :(得分:3)

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

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

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