我正在尝试从字符串中保存的名称创建一个类。我尝试了很多东西,但总是得到“价值不能为空”
这是班级
public static readonly MigraDoc.DocumentObjectModel.Color Aquamarine
Member of MigraDoc.DocumentObjectModel.Colors
AquaMarine 是MigraDoc.DocumentObjectModel.Colors中的一个类,是一个颜色
的类这是我尝试过的,与我认为应该工作的一样接近:
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
我觉得解决方案不应该太远...任何想法? :)
答案 0 :(得分:1)
您获得null参数异常,因为Type.GetType()
返回null。
您为Type.GetType()
指定的参数是字段名称,而不是类型名称。类型名称为"MigraDoc.DocumentObjectModel.Color"
。
如果您想要该类型的SlateBlue
字段,则需要在包含颜色的类型上使用GetField()
。
我认为你在这里混淆了类型(类/结构)和实例。 Aquamarine
包含Color
类型的实例。这与类型本身不同。
答案 1 :(得分:1)
不,Aquamarine
不是一个类,它是一个变量。您无法创建变量的实例...