Maison >développement back-end >C++ >Comment utiliser la réflexion pour attribuer des valeurs par défaut aux propriétés en C #?

Comment utiliser la réflexion pour attribuer des valeurs par défaut aux propriétés en C #?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-26 09:46:12360parcourir

How Can Reflection Be Used to Assign Default Values to Properties in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn