2

PropertyChangedプロパティが変更されたときにイベントを処理して発生させるリストクラスを作成しようとしています。

私のメインクラスには、3つの異なるタイプのアイテムをすべて含む3つのリストが含まれています

次のようなことができるようになりたいです

public class MainClass : INotifyPropertyChanged
{
    public CustomList<TextRecord> texts{get; set;};
    public CustomList<BinaryRecord> binaries{get; set;};
    public CustomList<MP3Record> Mp3s{get; set;};

    //implement INotifyPropertyChanged



}

    public class CustomList<T> where T:(TextRecord, BinaryRecord, MP3Record)
    {


    //code goes here

    }

CustomList クラスにこの制限を設定するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

12

制約内のジェネリック型パラメーターで "OR" セマンティクスを使用することはできませんが、特別なインターフェイスを作成し、ターゲット タイプにそれを実装させ、ジェネリックのインスタンス化を特別なインターフェイスを実装するクラスに制限することができます。

public interface ICustomListable {
    // You can put some common properties in here
}
class TextRecord : ICustomListable {
    ...
}
class BinaryRecord : ICustomListable {
    ...
}
class MP3Record : ICustomListable {
    ...
}

だから今、あなたはこれを行うことができます:

public class CustomList<T> where T: ICustomListable {
    ...
}
于 2013-03-05T20:37:36.757 に答える