有没有办法为接口指定允许的子类?
假设我有这些课程:
public interface IDoable // specify that only A or it's subclasses can implement IDoable
{
void Do();
}
public class A : IDoable
{
public void Do(){};
public void Foo(){};
}
public class B : IDoable // implementing IDoable on something other than A or its sublcasses doesn't make any sense
{
// public void Do();
}
所以稍后我将能够做到这一点:
IDoable d = new A();
d.Do();
d.Foo(); // I'd like to be able to do this.
C#是否支持这种功能?
答案 0 :(得分:3)
不,它没有。接口表示合同,任何有权访问它的类都可以实现它。
您当然可以通过设置internal
来限制对它的访问(因此只有相同的程序集才能访问它)。
答案 1 :(得分:2)
答案 2 :(得分:2)
有没有办法为接口指定允许的子类?
不,任何类都可以实现一个接口,只要它可以访问它。界面的重点是隐藏具体的类型/实现来自它的消费者,所以对我而言,以你的建议方式将它结合起来是没有意义的。