Подтвердить что ты не робот

Почему в .NET 4.5 нет атрибута CallerTypeNameAttribute?

С .NET 4.5 команда CLR добавила:

Почему не было добавлено ни одного типа вызывающего?

4b9b3361

Ответ 1

Это сложно для кого-то, кроме команды дизайнеров, ответить, но я бы сказал, что для CallerTypeNameAttribute нет сильного варианта использования.

Атрибуты файла и строки предоставляют расширенную информацию для процедур ведения журнала, которые иначе невозможно было бы получить. Имя члена позволяет вести журнал и упрощает реализацию INotifyPropertyChanged, а также позволяет безопасное рефакторинг имен без необходимости поиска строк.

Тип вызывающего абонента уже может быть передан данному методу с помощью typeof(CurrentType).Name, поэтому он, вероятно, не заслуживает дополнительного атрибута. Вы могли бы сказать, что имя участника вызывающего абонента также может быть получено с помощью MethodBase.GetCurrentMethod, но это, вероятно, всегда вызывает отражение, а typeof, вероятно, оптимизировано, поэтому вы уже получаете преимущество безопасного рефакторинга и меньшее влияние на производительность.

Единственный недостаток использования typeof вместо возможного атрибута будет заключаться в том, что обход объекта не повлияет на подход атрибута.