例として次のクラスを取り上げます。
class Sometype
{
int someValue;
public Sometype(int someValue)
{
this.someValue = someValue;
}
}
次に、リフレクションを使用してこのタイプのインスタンスを作成します。
Type t = typeof(Sometype);
object o = Activator.CreateInstance(t);
通常、これは機能SomeType
しますが、パラメーターなしのコンストラクターが定義されていないため、への呼び出しにより、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません。」というメッセージが表示されActivator.CreateInstance
、タイプの例外がスローされます。すべてのクラスにパラメーターなしのコンストラクターを追加するのはちょっと厄介です。MissingMethodException
FormatterServices.GetUninitializedObject
初期化されていない文字列を作成することはできません。例外が発生する可能性がありSystem.ArgumentException: Uninitialized Strings cannot be created.
ます。これを覚えておいてください。