从字符串创建类

本文关键字:创建 字符串 | 更新日期: 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实例。这与类型本身不同。