c# - 泛型确保 T 属于指定的 N 个类中的任何一个

标签 c# .net generics

我正在尝试创建一个列表类,以在任何属性更改时处理和引发 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 类施加这个限制?提前致谢。

最佳答案

您不能在约束中对泛型类型参数使用“或”语义,但您可以创建一个特殊接口(interface),让您的目标类型实现它,并将您的泛型实例化限制为实现特殊接口(interface)的类:

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 {
    ...
}

关于c# - 泛型确保 T 属于指定的 N 个类中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233577/

相关文章:

c# - 为什么直到按下 Tab 键才显示 Focus Rectangle?

java - 通用方法类型安全

javascript - .net mvc 5 不引人注目的禁用字段验证

c# - 仅针对某些异常类型中断

c# - USB 连接 "The semaphore timeout period has expired"错误

c# - C#无法通过列名访问DataTables列

.net - 自托管 (WinForm) WCF 服务如何与主窗体交互?

java - Java中的泛型+可选参数不能组合

generics - 实例化具有对变体记录的子类型访问权限的包时出现问题

c# - 从异步中捕获未处理的异常