从字符串创建类
本文关键字:创建 字符串 | 更新日期: 2023-09-27 18:35:36
我正在尝试从字符串中保存的名称创建一个类。我尝试了很多东西,但总是得到"值不能为空"
这是类
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
我觉得解决方案应该不会很远...有什么想法吗?:)
不,Aquamarine
不是一个类,它是一个变量。您无法创建变量的实例...
您会收到空参数异常,因为Type.GetType()
返回空。您指定为Type.GetType()
参数的是字段名称,而不是类型名称。类型名称将为 "MigraDoc.DocumentObjectModel.Color"
。
如果希望名为SlateBlue
的字段来自该类型,则需要对包含颜色的类型使用 GetField()
。
我认为您在这里混淆了类型(类/结构)和实例。 Aquamarine
包含类型 Color
的实例。这与类型本身不同。