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 回答