Heim >Backend-Entwicklung >C++ >Wie kann Reflexion verwendet werden, um Standardwerte in C#den Eigenschaften zuzuweisen?
Verwenden Sie Reflection, um C#-Eigenschaften Standardwerte zuzuweisen
Bei der objektorientierten Programmierung ist es häufig erforderlich, Eigenschaften auf Standardwerte zu initialisieren, insbesondere während der Serialisierung und Deserialisierung. Während es möglich ist, mithilfe einer Switch-Anweisung explizit Standardwerte basierend auf Typen festzulegen, ist die Verwendung von Reflektion ein effizienterer Ansatz, der eine programmgesteuerte Lösung bietet.
Lösung
Wenn Sie Reflektion zum Zuweisen von Standardwerten zu Eigenschaften verwenden, müssen Sie zwei Situationen berücksichtigen: Werttypen und Referenztypen.
Werttyp
Für Werttypen (die tatsächliche Daten enthalten) können Sie die Methode Activator.CreateInstance
verwenden. Diese Methode erstellt eine neue Instanz des angegebenen Werttyps und initialisiert ihn effektiv auf einen Standardwert.
<code class="language-csharp">object value = Activator.CreateInstance(type);</code>
Referenztyp
Im Gegensatz zu Werttypen enthalten Referenztypen nur einen Verweis auf ein anderes Objekt. In diesem Fall ist das Festlegen der Eigenschaft auf null die geeignete Möglichkeit, ihren Standardwert darzustellen.
<code class="language-csharp">object reference = null;</code>
Generische Implementierung
Durch die Kombination von Methoden von Werttypen und Referenztypen kann eine generische Methode definiert werden, um eine einheitliche Möglichkeit zum Abrufen eines Standardwerts bereitzustellen.
<code class="language-csharp">public static object GetDefault(Type type) { if (type.IsValueType) // 在较新的.NET版本中,应写为 type.GetTypeInfo().IsValueType return Activator.CreateInstance(type); return null; }</code>
Hinweis: In neueren .NET-Versionen (z. B. .NET Standard) sollte type.IsValueType
als type.GetTypeInfo().IsValueType
geschrieben werden.
Das obige ist der detaillierte Inhalt vonWie kann Reflexion verwendet werden, um Standardwerte in C#den Eigenschaften zuzuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!