C#确保接口实现继承自特定的基类

Noe*_*mer 0 c# inheritance extension-methods interface

我有一个界面

public interface IInputReciever {
    void OnRecieveInput(InputInfo Info);
}
Run Code Online (Sandbox Code Playgroud)

和一个接口扩展类

public static class IInputRecieverExtensions {
    public static void SubscribeToInput(this IInputReciever Reciever) { 
       //Use member of X
    }
    public static void UnsubscribeFromInput(this IInputReciever Reciever) {
       //Use member of X
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我有两个A和B类; 但是,虽然只有B继承自X,但都实现了我的界面.

public class B : X, IInputReciever {
   //Contains members of B and X
}

public class A : IInputReciever {
   //Contains members of A only
}
Run Code Online (Sandbox Code Playgroud)

在我的接口扩展中,我想使用X的成员,但是这不会编译,因为实现者不是X的子类,也不能保证是一个.

我可以以某种方式强制我的实现者从X派生以使这个场景工作 - 或者有更好的方法来解决这个问题吗?

Ste*_*ham 9

使用接口的目的是表明您不关心实现细节,即哪个类实现接口.如果必须强制派生类使用特定实现,则将X设为抽象基类,不提供接口,并使扩展方法引用X而不是接口.