突然機能しなくなったコードを扱っています。問題を .NET 4 の CallerMemberName 機能まで追跡しました
[CallerMemberName] String propertyName = "" は、プロパティ "speed" から呼び出されているにもかかわらず、"" を返します。以前は問題なく動作していましたが、プロジェクトが「.NET Framework 4」をターゲットにしていることを確認しました。何がこれを引き起こす可能性がありますか?
プロパティ コード:
public double speed
{
get { return _speed; }
set
{
_speed = value;
NotifyPropertyChanged();
}
}
ここで処理されます:
//events
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
void RealTimeDashboard_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "speed":
NotifyPropertyChanged("speedDescription");
CalculateEfficency();
CheckEfficentConfigurations();
break;
}
}
編集: Microsoft BCL Portability Pack をインストールすると、同じように動作しますが、次の警告が表示されます。
警告 10 'D:\Projects...MainWindow.xaml.cs' の型 'System.Runtime.CompilerServices.CallerMemberNameAttribute' は、'd:\Projects.. .\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll'. 「D:\Projects....\MainWindow.xaml.cs」で定義されたタイプを使用します。D:\Projects...AnOtherClass.xaml.cs