C# 从字符串创建类
我正在尝试从字符串中保存的名称创建一个类。我尝试了很多方法,但总是得到“值不能为空” 这是课程C# 从字符串创建类,c#,class,reflection,activator,C#,Class,Reflection,Activator,我正在尝试从字符串中保存的名称创建一个类。我尝试了很多方法,但总是得到“值不能为空” 这是课程 public static readonly MigraDoc.DocumentObjectModel.Color Aquamarine Member of MigraDoc.DocumentObjectModel.Colors 海蓝宝石是MigraDoc.DocumentObjectModel.Colors中的一个类,是颜色的一个类 以下是我尝试过的方法,它与我认为应该有效的方法非常接近: Col
public static readonly MigraDoc.DocumentObjectModel.Color Aquamarine
Member of MigraDoc.DocumentObjectModel.Colors
海蓝宝石是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
我觉得解决办法应该不会太远。。。有什么想法吗?:) 由于
Type.GetType()
返回null,因此您会得到null参数异常。
为Type.GetType()
指定的参数是字段名,而不是类型名。类型名称应为“MigraDoc.DocumentObjectModel.Color”
如果希望该类型中名为SlateBlue
的字段,则需要在包含颜色的类型上使用
我认为您在这里混淆了类型(类/结构)和实例<代码>海蓝宝石包含类型
颜色
的实例。这与类型本身不同 不,Aquamarine
不是一个类,而是一个变量。你不能创建变量的实例…我不知道类名允许+
在其中。根据这一点,是的,实际上它甚至不是类的实例,它只是一个包含类实例引用的变量。@Guffa通常是的,但是一个ValueType。