这个问题与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派生时,除了抛出异常之外还有什么方法。