0

文字列に保持されている名前からクラスを作成しようとしています。私はたくさんのことを試しましたが、常に「値をnullにすることはできません」というメッセージが表示されます

クラスはこちら

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()null を返すため、null パラメーター例外が発生します。引数として指定したのType.GetType()は、型名ではなくフィールド名です。タイプ名は"MigraDoc.DocumentObjectModel.Color".

そのタイプから名前が付けられたフィールドが必要な場合は、色を含むタイプでSlateBlue使用する必要があります。GetField()

ここでタイプ(クラス/構造体)とインスタンスを混同していると思います。型のインスタンスAquamarineが含まれています。それはタイプ自体と同じではありません。Color

于 2012-05-29T21:33:12.480 に答える
1

いいえ、Aquamarineクラスではなく、変数です。変数のインスタンスを作成することはできません...

于 2012-05-29T21:33:23.770 に答える