リフレクションを使用して C# プロパティにデフォルト値を割り当てます
オブジェクト指向プログラミングでは、特にシリアル化および逆シリアル化中に、プロパティをデフォルト値に初期化する必要があることがよくあります。 switch ステートメントを使用して型に基づいてデフォルト値を明示的に設定することもできますが、より効率的なアプローチは、プログラムによるソリューションを提供するリフレクションを利用することです。
解決策
リフレクションを使用してプロパティにデフォルト値を割り当てる場合は、値の型と参照の型という 2 つの状況を考慮する必要があります。
値の型
値の型 (実際のデータを保持する) の場合は、Activator.CreateInstance
メソッドを使用できます。このメソッドは、指定された値の型の新しいインスタンスを作成し、事実上デフォルト値に初期化します。
<code class="language-csharp">object value = Activator.CreateInstance(type);</code>
参照型
値型とは対照的に、参照型は別のオブジェクトへの参照のみを保持します。この場合、プロパティを null に設定するのが、デフォルト値を表す適切な方法です。
<code class="language-csharp">object reference = null;</code>
汎用実装
値型と参照型のメソッドを組み合わせて、デフォルト値を取得するための統一された方法を提供する汎用メソッドを定義できます。
<code class="language-csharp">public static object GetDefault(Type type) { if (type.IsValueType) // 在较新的.NET版本中,应写为 type.GetTypeInfo().IsValueType return Activator.CreateInstance(type); return null; }</code>
注: 新しい .NET バージョン (.NET Standard など) では、type.IsValueType
は type.GetTypeInfo().IsValueType
として記述する必要があります。
以上がC# でリフレクションを使用してプロパティにデフォルト値を割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。