L’attributo CallerMemberName in 4.5 “può essere simulato”?

Quindi .NET 4.5 introduce CallerMemberNameAttribute , che sembra una manna per chiunque lavori con WPF e implementa INotifyPropertyChanged – la mia domanda è questa: l’attributo è intrinsecamente legato / supportato dal compilatore 4.5 5.0, o è più un aiutante dello zucchero sintattico di l’ambiente, proprio come si potrebbe falsificare Visual Studio dichiarando un ExtensionAttribute proprio, trasformando magicamente la syntax LINQ?

Modifica: (scusami Jon!) Suppongo che mi stia chiedendo se è ansible “abilitare” la funzionalità di CallerMemberNameAttribute in .NET 4.0 tramite la ridichiarazione dell’attributo nello spazio dei nomi appropriato, proprio come si può “abilitare” la syntax della query LINQ in. NET 2.0 mediante la corretta dichiarazione della class ExtensionAttribute . Il mio forte sospetto è no, naturalmente …

Metti un altro modo: voglio sapere se posso beneficiare della funzionalità di CallerMemberName senza CallerMemberName aggiornamento a .NET 4.5 / 5

Speriamo sia più chiaro …

NinjaEdit # 2: Sigh … le convenzioni sulla numerazione delle versioni sono confuse!

Sì, puoi, esattamente come potresti usare LINQ e .NET 2, come hai detto tu. Io uso il seguente in un progetto .NET 4.0 con il compilatore VS2012 con successo:

 namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] public sealed class CallerMemberNameAttribute : Attribute { } } 

State molto attenti che tutti i membri del progetto stiano utilizzando VS2012, altrimenti otterranno bug silenziosi perché CallerMemberNameAttribute non ha fatto nulla e null stato passato come parametro predefinito.

Modifica 2013-06-28: prendere in considerazione l’installazione del pacchetto NuGet di Microsoft.Bcl che fornisce CallerMemberNameAttribute (e alcune altre classi da .NET 4.5) per .NET 4 e Silverlight anziché CallerMemberNameAttribute manualmente.