1

在我的项目中,我有 2 个接口。

IButtonInputHandler<T>& INumericInputHandler<T>

现在我想创建一个获取第一个接口\第二个接口\两者的类,并根据它们的类型公开方法。例如,如果我使用IButtonInputHandler<Buttons>and构建类INumericInputHandler<Scroller>,我想公开两个接收 Button 和 Scroller 对象的函数。

如果我只用 构建类IButtonInputHandler<Keys>,我想公开一个将接收 Buttons 对象的函数。

需要明确的是——如果我保留动态使用 2 种类型的选项,我的类将是这样的:

Class<T>并且该方法将返回 T。

基本上我需要灵活性,有时使用一种类型,有时使用两种类型。

4

2 回答 2

1

您需要使用的是constraints,但是添加多个约束时没有 OR 选项。

您需要做的是创建一个T必须实现的第三个接口(或基类)。对于您的原始示例,如果ButtonsScroller两者都实现IInputs,您可以将接口声明为

public interface IButtonInputHandler<T>  where T : IInputs
{
}

public interface INumericInputHandler<T>  where T : IInputs
{

}
于 2013-04-10T19:39:35.620 回答
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)
}
于 2013-04-12T22:45:38.773 回答