struct INotifyPropertyChanged не будет работать с ctor - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю сообщение об ошибке во время разработки

PropertyChanged должен быть полностью присвоен

В ктор. Если не ctor, то не сообщение об ошибке.

Как это исправить?

public struct LogCurve : INotifyPropertyChanged
{
    private void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void Notify()
    {
        OnPropertyChanged(string.Empty);
    }
    public string Name { get; }
    public List<LogCurveDataPoint> LogPoints { get; }
    public int ServerCount { get; }
    public int Count { get { return LogPoints.Count; } }
    public double? MinValue
    {
        get
        {
            return LogPoints.Count == 0 ? (double?)null : LogPoints.Min(x => x.Value);
        }
    }
    public double? MaxValue
    {
        get
        {
            return LogPoints.Count == 0 ? (double?)null : LogPoints.Max(x => x.Value);
        }
    }
    public long? MinIndex
    {
        get
        {
            return LogPoints.Count == 0 ? (long?)null : LogPoints.Min(x => x.Index);
        }
    }
    public long? MaxIndex
    {
        get
        {
            return LogPoints.Count == 0 ? (long?)null : LogPoints.Max(x => x.Index);
        }
    }
    public LogCurve(string name, int serverCount)
    {
        Name = name;
        LogPoints = new List<LogCurveDataPoint>();
        ServerCount = serverCount;
    }
}

1 Ответ

0 голосов
/ 26 апреля 2018

Все поля struct должны быть назначены в его конструкторе. Это также относится к событиям. Если вы не знаете, что делать с полем события в конструкторе, просто установите его на null:

public LogCurve(string name, int serverCount)
{
    Name = name;
    LogPoints = new List<LogCurveDataPoint >();
    ServerCount = serverCount;
    PropertyChanged = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...