Получить имя объекта, на котором зарегистрировано событие в C # - PullRequest
0 голосов
/ 22 октября 2018

Я подписался на CollectionChanged событие ObservableCollection<string> m_myCollection, например:

  private ObservableCollection<string> m_myCollection;
  public ObservableCollection<string> MyCollection
  {
     get => m_myCollection;
     set
     {
        m_myCollection= value;
        OnPropertyChanged();
     }
  }

  public ViewModel()
  {
     MyCollection = new ObservableCollection<string>();

     MyCollection.CollectionChanged += OnCollectionChanged;

     MyCollection.Add("Item 1");
  }

  private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
  {
     // How to get the name of the collection here? That is: "MyCollection"
  }

Как получить имя коллекции в методе?

1 Ответ

0 голосов
/ 22 октября 2018

ObservableCollection экземпляры не имеют "имен".И любое количество переменных может содержать ссылку на коллекцию.Их не может быть, может быть десять.Там нет реального "автоматического" способа сделать это.Все, что вы действительно можете сделать, это передать информацию вокруг себя, например, передав обработчику то, что вы считаете «именем» коллекции:

 MyCollection = new ObservableCollection<string>();
 MyCollection.CollectionChanged += (s, e) => HandleCollectionChanged("MyCollection", e);
 MyCollection.Add("Item 1");

В качестве альтернативы, вы можете сделать свой собственный типколлекции, возможно расширение ObservableCollection, чтобы дать ему свойство Name, которое вы установили в конструкторе, а затем можете прочитать позже.

...