Quand les objects d’atsortingbuts sont-ils créés?

Comme les atsortingbuts ne sont en réalité que des métadonnées attachées à des assemblys, cela signifie-t-il que les objects d’atsortingbut ne sont créés que sur demande (comme lorsque vous appelez GetCustomAtsortingbutes)?

Ou sont-ils créés lors de la création de l’object?

Ou bien, une combinaison des deux premiers, créée lors de la création de l’object en raison d’une parsing d’atsortingbut par le CLR?

De CLR via C #, troisième édition:

Si vous souhaitez construire un object d’atsortingbut, vous devez appeler GetCustomAtsortingbutes ou GetCustomAtsortingbute . Chaque fois qu’une de ces méthodes est appelée, elle construit de nouvelles instances du type d’atsortingbut spécifié et définit chacun des champs et propriétés de l’instance en fonction des valeurs spécifiées dans le code source. Ces méthodes renvoient des références à des instances entièrement construites des classes d’atsortingbuts appliquées.

Alors oui, ils ne sont créés que sur demande.

Ils sont créés sur demande.

Par exemple, si vous ajoutez des atsortingbuts .NET 3.0 à un DataContractAtsortingbute .NET 2.0 (par exemple, WCF DataContractAtsortingbute ), vous pourrez toujours utiliser cet assemblage sur une machine sur laquelle .NET 3.0 n’est pas installé. vous n’avez aucun code qui tente d’accéder aux atsortingbuts.

Ce n’est pas tout à fait propre, les atsortingbuts affectent également la génération de code. Certains atsortingbuts sont interprétés par le compilateur, [DllImport] par exemple. Certains sont découverts par la gigue, [MethodImpl] par exemple. Ceci est étendu à l’infini à d’autres outils et classes du framework écrits pour tirer parti des atsortingbuts.

Mais ces outils font juste ce que vous devez faire si vous voulez trouver vos propres atsortingbuts, appeler GetCustomAtsortingbutes () est requirejs. Ce type de code n’est jamais associé à une instance de l’object, les atsortingbuts s’appliquent aux types.