Maison > développement back-end > C++ > Comment puis-je rechercher efficacement des propriétés publiques avec un attribut personnalisé spécifique en C# ?

Comment puis-je rechercher efficacement des propriétés publiques avec un attribut personnalisé spécifique en C# ?

DDD
Libérer: 2025-01-05 02:37:38
original
944 Les gens l'ont consulté

How Can I Efficiently Find Public Properties with a Specific Custom Attribute in C#?

Recherche de propriétés avec des attributs spécifiques à l'aide de Reflection

Les attributs personnalisés sont un outil puissant pour annoter des types et des membres dans le code .NET. Il devient parfois nécessaire de récupérer des informations sur ces attributs par programmation. Cette question se concentre sur la récupération d'une liste de propriétés publiques attribuées à un attribut personnalisé spécifique appelé MyAttribute, dont la propriété AllowMultiple est définie sur false.

Le code fourni utilise une boucle pour parcourir les propriétés du type. et vérifie la présence de l'attribut personnalisé à l'aide de GetCustomAttributes(). Bien que cette approche soit fonctionnelle, elle implique la matérialisation d'instances d'attributs, ce qui entraîne un coût en termes de performances.

Une approche plus efficace consiste à utiliser la méthode d'extension Where() sur la collection GetProperties(), comme démontré dans le document donné. réponse :

var props = t.GetProperties().Where(
    prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
Copier après la connexion

Ce code exploite la méthode Attribute.IsDefined(), qui vérifie l'existence d'un type d'attribut spécifique sur un membre sans créer d'instances d'attribut. L'expression lambda garantit que seules les propriétés avec MyAttribute sont sélectionnées dans la variable props.

L'utilisation de cette approche évite la surcharge associée à la matérialisation des instances d'attribut, ce qui aboutit à une solution plus légère et plus performante.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal