0

突然機能しなくなったコードを扱っています。問題を .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

4

0 に答える 0