在我的项目中,我有2个接口。
IButtonInputHandler<T>
&amp; INumericInputHandler<T>
现在我想创建一个获取第一个接口的类或第二个接口\两个接口,并根据它们的类型公开方法。例如,如果我使用IButtonInputHandler<Buttons>
和INumericInputHandler<Scroller>
构建类,我想公开两个接收Button和Scroller对象的函数。
如果我只使用IButtonInputHandler<Keys>
构建类,我想公开一个将接收Buttons对象的函数。
要明确 - 如果我保留选项以动态使用2种类型,我的类将是这样的:
Class<T>
,该方法将返回T.
基本上我需要灵活性,有时使用1种类型,有时使用2种类型。
答案 0 :(得分:1)
您需要使用constraints,但添加多个约束时没有OR选项。
您需要做的是创建T
必须实现的第3个接口(或基类)。对于原始示例,如果Buttons
和Scroller
都实现IInputs
,则可以将接口声明为
public interface IButtonInputHandler<T> where T : IInputs
{
}
public interface INumericInputHandler<T> where T : IInputs
{
}
答案 1 :(得分:1)
制作三个班级:
public class ButtonInputHandler<T> : IButtonInputHandler<T>
{
//implement IButtonInputHandler<T> here
}
public class NumericInputHandler<T> : INumericInputHandler<T>
{
//implement INumericInputHandler<T> here
}
public class ButtonAndNumericInputHandler<TButton, TNumeric> :
ButtonInputHandler<TButton>, INumericInputHandler<TNumeric>
{
//implement INumericInputHandler<TNumeric> here
//(the implementation for IButtonInputHandler<TButton> will be inherited)
}