【问题标题】:What's I should use "where T: <Interface>"? [duplicate]我应该使用什么“where T: <Interface>”? [复制]
【发布时间】:2017-05-11 06:26:17
【问题描述】:

这段代码有什么不同?

interface ICommandHanddler<T> where T : ICommand
    {
        void Handle(T command);
    }

还有这段代码:

interface ICommandHanddler<ICommand>
    {
        void Handle(ICommand command);
    }

对我来说,它对我的​​软件有同样的影响,但我想知道这是否真的没有影响,或者这只是一个好习惯

【问题讨论】:

  • 如果你不关心T的实际类型,使用后者。

标签: c# generics interface generic-programming


【解决方案1】:

前者说:“CLASS 类型的接口,其中 CLASS 是 ICommand 的扩展” 后者说:“ICommand 类型的接口”

前者允许您使用多种类型的对象调用您的ICommandHanddler接口,只要它们继承ICommand,或者是ICommand

关于程序的影响:如果您有多个类从一个共同的父类扩展并覆盖相同的函数,那么使用前一种方法会让您的生活变得更轻松、更有条理。如果你只有ICommand 类,那么你可以做后者。这完全取决于您计划如何构建和扩展您的课程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多