0

我正在尝试从字符串中保存的名称创建一个类。我尝试了很多东西,但总是得到“值不能为空”

这是课程

public static readonly MigraDoc.DocumentObjectModel.Color Aquamarine
Member of MigraDoc.DocumentObjectModel.Colors

AquaMarine是 MigraDoc.DocumentObjectModel.Colors 中的一个类,是Color的一个类

这是我尝试过的,与我认为应该工作的一样接近:

Color myColor = (Color)Activator.CreateInstance(Type.GetType("MigraDoc.DocumentObjectModel.Colors+SlateBlue")); 
//+ for nested classes

一个变种:

Color myColor = (Color)Activator.CreateInstance(Type.GetType("MigraDoc.DocumentObjectModel+Colors+SlateBlue"));

但我总是得到:

Value cannot be null.
Parameter name: type

我觉得解决方案应该不会很远......有什么想法吗?:)

4

2 回答 2

1

你得到空参数异常,因为Type.GetType()返回空值。您指定为参数的Type.GetType()是字段名称,而不是类型名称。类型名称将是"MigraDoc.DocumentObjectModel.Color".

如果您想要SlateBlue从该类型命名的字段,则需要GetField()在包含颜色的类型上使用。

我认为您在这里混淆了类型(类/结构)和实例。Aquamarine包含类型的实例Color。这与类型本身不同。

于 2012-05-29T21:33:12.480 回答
1

不,Aquamarine不是一个类,它是一个变量。您不能创建变量的实例...

于 2012-05-29T21:33:23.770 回答