C# 约束泛型输入参数

C# 约束泛型输入参数,c#,generics,interface,C#,Generics,Interface,我设计了以下界面 public interface IProcess<ICommand> { void Run(); } 然而,我似乎仍然缺少一些东西。实现类如下所示 public class Processo : IProcess<Commando> { } public class Commando : ICommand { } 公共类进程o:IProcess{} 公营突击队:ICommand{} 然而,编译器声称它不会飞,因为Commando不能转换为ICo

我设计了以下界面

public interface IProcess<ICommand> { void Run(); }
然而,我似乎仍然缺少一些东西。实现类如下所示

public class Processo : IProcess<Commando> { }

public class Commando : ICommand { }
公共类进程o:IProcess{}
公营突击队:ICommand{}

然而,编译器声称它不会飞,因为Commando不能转换为ICommand。我错过了什么

您可以使用
where
关键字应用约束:

public interface IProcess<T> where T : ICommand { void Run(); }
公共接口i进程,其中T:ICommand{void Run();}

如文件所述。

您可以使用
where
关键字应用约束:

public interface IProcess<T> where T : ICommand { void Run(); }
公共接口i进程,其中T:ICommand{void Run();}

如文件所述。

您可以使用
where
关键字应用约束:

public interface IProcess<T> where T : ICommand { void Run(); }
公共接口i进程,其中T:ICommand{void Run();}

如文件所述。

您可以使用
where
关键字应用约束:

public interface IProcess<T> where T : ICommand { void Run(); }
公共接口i进程,其中T:ICommand{void Run();}


如文件所述。

您对此进行了研究吗?看看这个:哈,显然我没有。至少还不够好。这就是当一个人假设他将要发现的东西。。。我真丢脸。尽管如此,还是有一个好问题需要思考。那么您现在知道如何解决这个问题了吗?
IProcess
并不意味着您希望泛型参数实现
ICommand
。编写它的方式就是泛型参数的名称。您可能想要的是
公共接口i进程,其中TCommand:ICommand
。但是,如果您不使用
TCommand
的话,为什么界面是通用的呢?haim770我确实使用过它。只是不在最小的可能例子中。:)你研究过这个吗?看看这个:哈,显然我没有。至少还不够好。这就是当一个人假设他将要发现的东西。。。我真丢脸。尽管如此,还是有一个好问题需要思考。那么您现在知道如何解决这个问题了吗?
IProcess
并不意味着您希望泛型参数实现
ICommand
。编写它的方式就是泛型参数的名称。您可能想要的是
公共接口i进程,其中TCommand:ICommand
。但是,如果您不使用
TCommand
的话,为什么界面是通用的呢?haim770我确实使用过它。只是不在最小的可能例子中。:)你研究过这个吗?看看这个:哈,显然我没有。至少还不够好。这就是当一个人假设他将要发现的东西。。。我真丢脸。尽管如此,还是有一个好问题需要思考。那么您现在知道如何解决这个问题了吗?
IProcess
并不意味着您希望泛型参数实现
ICommand
。编写它的方式就是泛型参数的名称。您可能想要的是
公共接口i进程,其中TCommand:ICommand
。但是,如果您不使用
TCommand
的话,为什么界面是通用的呢?haim770我确实使用过它。只是不在最小的可能例子中。:)你研究过这个吗?看看这个:哈,显然我没有。至少还不够好。这就是当一个人假设他将要发现的东西。。。我真丢脸。尽管如此,还是有一个好问题需要思考。那么您现在知道如何解决这个问题了吗?
IProcess
并不意味着您希望泛型参数实现
ICommand
。编写它的方式就是泛型参数的名称。您可能想要的是
公共接口i进程,其中TCommand:ICommand
。但是,如果您不使用
TCommand
的话,为什么界面是通用的呢?haim770我确实使用过它。只是不在最小的可能例子中。:)请参见编辑。我用了你的链接,它帮了我的忙,但我还是被一些东西卡住了。我看到了你的编辑。我已经测试了你的代码,它对我来说很好。所以还有别的事情发生了。在你的问题中,有一件事你没有展示出来,那就是
ICommand
,所以可能有一些事情不是那么简单。不过,如果不向我们展示这一点,我真的不能说。我相信你已经做到了。我们需要继续调查。据我所知,那里并没有什么奇怪的事情,但显然有些事情。我将设计一些自己的类并继续尝试+谢谢你的细心。你太棒了!结果表明,ICommand在NServiceBus中声明,但也在System.Windows.Input中声明。所以我看的课和我想的不一样。问题解决了!我很高兴能帮上忙!请参见编辑。我用了你的链接,它帮了我的忙,但我还是被一些东西卡住了。我看到了你的编辑。我已经测试了你的代码,它对我来说很好。所以还有别的事情发生了。在你的问题中,有一件事你没有展示出来,那就是
ICommand
,所以可能有一些事情不是那么简单。不过,如果不向我们展示这一点,我真的不能说。我相信你已经做到了。我们需要继续调查。据我所知,那里并没有什么奇怪的事情,但显然有些事情。我将设计一些自己的类并继续尝试+谢谢你的细心。你太棒了!结果表明,ICommand在NServiceBus中声明,但也在System.Windows.Input中声明。所以我看的课和我想的不一样。问题解决了!我很高兴能帮上忙!请参见编辑。我用了你的链接,它帮了我的忙,但我还是被一些东西卡住了。我看到了你的编辑。我已经测试了你的代码,它对我来说很好。所以还有别的事情发生了。在你的问题中,有一件事你没有展示出来,那就是
ICommand
,所以可能有一些事情不是那么简单。不过,如果不向我们展示这一点,我真的不能说。我相信你已经做到了。我需要继续调查