Какие еще полезные приемы позволяет использовать SpecialNameAttribute?

При исследовании вопроса о реализации Visual Basic Power (^ Оператор, я узнал, что System.Runtime.CompilerServices.SpecialNameAttribute Класс позволяет реализовать этот оператор в C# для использования в VB.

Интересно, что в документации говорится:

Класс SpecialNameAttribute в настоящее время не используется в.NET Framework, но зарезервирован для использования в будущем.

Мой вопрос: какие еще хитрые уловки доступны при использовании этого атрибута?

(дополнительный вопрос - является ли документация неточной или это семантическая проблема, поскольку атрибут, по-видимому, используется компилятором, но не структурой?)

1 ответ

Решение

Как вы можете заметить, глядя на сгенерированный IL из этого кода, компилятор использует атрибут, чтобы включить атрибут IL специального имени в объявлении метода. Лучшее место для его использования - спецификация ECMA 335 CLI.

Как правило, он используется для обозначения идентификатора как специального использования. Вы увидите, что он включается, например, для метода получения и установки свойства, методов доступа к событиям и перегрузок операторов. Обратите внимание на разницу с атрибутом IL rtspecialname, атрибут specialname влияет на инструменты, а не на джиттер. Как и в этом случае компилятор VB.NET, который теперь различает op_Exponent() как перегрузку оператора вместо простого метода со смешным именем.

Обратите внимание, что это все запутанное поведение, вы не можете использовать трюки, которые не были запрограммированы компилятором и джиттером.

Другие вопросы по тегам