约束通用输入参数
本文关键字:参数 输入 约束 | 更新日期: 2023-09-27 18:02:44
我设计了如下界面:
public interface IProcess<ICommand> { void Run(); }
然而,Resharper评论说我的输入参数叫什么并不重要,是ICommand
还是TWhatEverElse
。
现在,从我选择的名称可以很容易地看出,我想要设置泛型参数类型的限制,使其成为实现的、派生的或仅仅是类型ICommand
可悲的是,这台固执的电脑只会按我的要求去做,而不是按我的意思去做,所以我需要一些帮助。使用: where
的符号不会给我带来太多好处,因为我想约束到一个接口(和它的所有随从)。
可以约束发送到大括号中的类型吗?如果可以,如何约束?
<标题>编辑我在子句中添加了,得到了以下内容:
public interface IProcess<TCommand> where TCommand : ICommand { }
然而,我似乎仍然错过了一些东西。实现类如下:
public class Processo : IProcess<Commando> { }
public class Commando : ICommand { }
然而,编译器声称它不会飞行,因为Commando不能转换为 iccommand 。我错过了什么?!
标题>您可以使用where
关键字应用约束:
public interface IProcess<T> where T : ICommand { void Run(); }