Maison >développement back-end >C++ >Comment utiliser la réflexion pour attribuer des valeurs par défaut aux propriétés en C #?
Utiliser la réflexion pour attribuer des valeurs par défaut aux propriétés C#
En programmation orientée objet, il est souvent nécessaire d'initialiser les propriétés aux valeurs par défaut, notamment lors de la sérialisation et de la désérialisation. Bien qu'il soit possible de définir explicitement des valeurs par défaut en fonction des types à l'aide d'une instruction switch, une approche plus efficace consiste à utiliser la réflexion, qui fournit une solution programmatique.
Solution
Lorsque vous utilisez la réflexion pour attribuer des valeurs par défaut aux propriétés, vous devez considérer deux situations : les types de valeur et les types de référence.
Type de valeur
Pour les types valeur (contenant des données réelles), vous pouvez utiliser la méthode Activator.CreateInstance
. Cette méthode crée une nouvelle instance du type de valeur spécifié, l'initialisant effectivement à une valeur par défaut.
<code class="language-csharp">object value = Activator.CreateInstance(type);</code>
Type de référence
Contrairement aux types valeur, les types référence ne contiennent qu'une référence à un autre objet. Dans ce cas, définir la propriété sur null est le moyen approprié de représenter sa valeur par défaut.
<code class="language-csharp">object reference = null;</code>
Implémentation générique
En combinant des méthodes de types valeur et de types référence, une méthode générique peut être définie pour fournir une manière unifiée d'obtenir une valeur par défaut.
<code class="language-csharp">public static object GetDefault(Type type) { if (type.IsValueType) // 在较新的.NET版本中,应写为 type.GetTypeInfo().IsValueType return Activator.CreateInstance(type); return null; }</code>
Remarque : dans les versions .NET plus récentes (telles que .NET Standard), type.IsValueType
doit être écrit comme type.GetTypeInfo().IsValueType
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!