Является ли атрибут CallerMemberName в 4.5 “способным подделаться”?
Таким образом, .NET 4.5 представляет CallerMemberNameAttribute
, который кажется удачным для любого, кто работает с WPF и реализует INotifyPropertyChanged
– мой вопрос заключается в следующем: Является ли атрибут внутренне привязанным / поддерживаемым компилятором 4.5 5.0 или является скорее синтаксическим помощником сахара среда, так же, как можно подделать Visual Studio, объявив собственный ExtensionAttribute
, волшебным образом включив синтаксис LINQ?
Изменить: (извините, Джон!) Я предполагаю, что я спрашиваю, можно ли «включить» функциональность CallerMemberNameAttribute
в .NET 4.0 посредством повторной CallerMemberNameAttribute
атрибута в правильном пространстве имен, подобно тому, как можно «включить» синтаксис запроса LINQ. NET 2.0 путем правильного объявления classа ExtensionAttribute
. Моего сильного подозрения нет, естественно …
Поставьте еще один способ: я хочу знать, могу ли я извлечь выгоду из функциональности CallerMemberName
без обновления до .NET 4.5 / 5
- Можно ли использовать другой шаблон для выбранного элемента в WPF ComboBox, чем для элементов в раскрывающемся списке?
- WPF: установка ширины (и высоты) в процентах
- Являются ли "{Binding Path =.}" И "{Binding}" действительно равными
- WPF XAML Bindings и CurrentCulture Display
- WPF - привязка к индексу предметов изнутри ItemTemplate of ItemsControl?
Надеюсь, это более ясно …
NinjaEdit # 2: Соглашения о присвоении номера версии … вступают в заблуждение!
- Контекстное меню WPF в левом клике
- Создание дружественной страtagsи MVVM
- C # / WPF: отключить Text-Wrap из RichTextBox
- Как рассчитать ширину текстового блока WPF для его известного размера шрифта и символов?
- Связывание данных с SelectedItem в WPF Treeview
- Анимация WPF: привязка к атрибуту «To» анимации раскадровки
- WPF Binding - значение по умолчанию для пустой строки
- WPF: слайдер с событием, которое запускается после того, как пользователь перетаскивает
Да, вы можете, точно так же, как вы могли бы использовать LINQ и .NET 2, как вы сказали. Я использую следующие в проекте .NET 4.0 с компилятором VS2012 с успехом:
namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] public sealed class CallerMemberNameAttribute : Attribute { } }
Будьте очень осторожны, чтобы все в проекте использовали VS2012, иначе они будут получать тихие ошибки, потому что CallerMemberNameAttribute
ничего не сделал, и null
был принят как параметр по умолчанию.
Изменить 2013-06-28: рассмотрите возможность установки пакета Microsoft.Bcl NuGet, который предоставляет CallerMemberNameAttribute
(и некоторые другие classы из .NET 4.5) для .NET 4 и Silverlight, а не для этого вручную.