J'ai parcouru certaines classes de framework en utilisant le réflecteur et remarqué qu'un certain nombre de méthodes et de propriétés ont l'attribut suivant
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
Je suis presque sûr d'avoir également vu le commentaire ci-dessus ailleurs et je ne l'ai jamais suivi.
Quelqu'un pourrait-il me dire ce que cela signifie dans le C # et dans tout autre contexte?
Il indique à NGen qu'il est OK d'insérer la méthode à laquelle il est appliqué même dans un assembly différent.
Par exemple:
String.Equals
a [TargetedPatchingOptOut]
String.Equals
String.Equals
call, en remplaçant l'instruction d'appel de méthode par le code réel de la méthode.Cependant, si Microsoft trouve une faille de sécurité dans String.Equals
, ils ne peuvent pas simplement mettre à jour mscorlib.dll
, car cela n'affectera pas l'Assemblée que vous venez de créer. (Puisqu'il a un code machine brut sans référencer String.Equals
).
Je suppose que si cela devait se produire, la mise à jour de sécurité effacerait le magasin NGen.
Notez que cet attribut n'est utile que dans les assemblys .NET Framework. Vous n'en avez pas besoin par vous-même. Vous pouvez trouver plus d'informations à ce sujet ici: https://stackoverflow.com/a/14982340/631802