我应该使用什么&#34;其中T:<interface>&#34;?

时间:2017-05-10 22:21:28

标签: c# generics interface generic-programming

这段代码之间的区别是什么?

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

和这段代码:

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

对我来说,它对我的​​软件有同样的影响,但我想知道这是否真的不会影响任何事情或者它只是一个好的做法

1 个答案:

答案 0 :(得分:0)

前者说:&#34; CLASS类型的接口,其中CLASS是ICommand的扩展&#34; 后者说:&#34; ICommand&#34;

类型的接口

前者允许您使用多种类型的对象调用ICommandHanddler界面,只要它们继承ICommandICommand

关于你的程序的影响:如果你有多个类从一个普通的父级延伸并覆盖相同的功能,那么它将使你的生活变得更容易,更有条理去做前一种方法。如果您拥有ICommand课程,那么您可以很好地完成后者。这完全取决于您计划构建和扩展课程的方式。