这个问题类似于Can I make a type “sealed except for internal types”,但使用接口而不是类。
我想用类似的东西制作一个图书馆:
public class SomeClass {
ISupporter Supporter {get; set;}
}
public interface ISupporter {/*Some public methods*/}
internal interface ISupporterInternal {/*Some secret methods*/}
public class SupporterA : ISupporterInternal {/*Includes some explicit interface impls of ISupporterInternal*/}
public class SupporterB : ISupporterInternal {/*Includes some explicit interface impls of ISupporterInternal*/}
库的用户应该能够为 SomeClass 的实例设置支持者对象。用户还应该能够使用 ISupporter 中的方法,但我不希望用户创建自己的 ISupporter 实现并让他分配这些实现的实例。
当分配的支持者的类型不是从 ISupporterInternal 派生时,除了抛出异常之外,还有其他方法吗?