これはそれほど疑問ではなく、私には奇妙なものがあります。ObservableCollection
クラスは一般的ですが、コレクションに変更すると発生するCollectionChanged
イベントは発生しません。つまり、イベントハンドラ内では、イベントargsオブジェクトから取得したNewItems
/OldItems
コレクション内のすべてのオブジェクトを、自分で適切なアイテムタイプにキャストする必要があります。C#:ObservableCollection - 汎用の "CollectionChanged"イベントはありませんか?
しかし、単純にそのイベントを一般的にすることはできませんでしたか?
public delegate void NotifyCollectionChangedEventHandler(object sender, NotifyCollectionChangedEventArgs<T> e);
し、すべての後
public class NotifyCollectionChangedEventArgs<T> {
// ...
public IList<T> NewItems { get; }
public IList<T> OldItems { get; }
と
public virtual event NotifyCollectionChangedEventHandler<T> CollectionChanged;
ような何か、型パラメータT
は、すでにあなたはいけ意味し、問題のObservableCollection
の宣言によって決定されますとにかくタイプT
(または互換性のないオブジェクト)をコレクションに追加することができます。だからこそすべての型は完全に型の安全でなければならず、イベントハンドラの中のオブジェクトを、どうにかしてはいけないことがわかっているどのような型にもキャストする必要がありません。
私が行方不明になったこのような理由はありますか?私。これは意識的なデザインの欲望か、あるいは単に見落としですか?
私が正しくリコール(しかし、私は非常によく間違っているかもしれない)、これはジェネリックで動作することができませんでしたWPFとは何かを持っていますが、コレクションの変更を監視する方法を知っておく必要がある場合(のObservableCollectionをWPFのために導入され、 – Polity