在C#中,接口(interface)定义了一组方法、属性和事件,这些方法、属性和事件可以由实现该接口的类来实现。接口不能包含字段、构造函数或析构函数。接口只能包含公共成员,因此protected成员无法通过接口访问。
当一个类实现一个接口时,它必须提供接口中定义的所有成员的实现。然而,这些实现必须是公共的,即使你试图将它们声明为protected也会导致编译错误。这是因为接口的目的是定义一个公共契约,任何实现该接口的类都应该遵循这个契约。如果允许protected成员通过接口访问,那么这个契约就会被破坏,因为其他类可能无法访问这些protected成员。
因此,protected成员不能通过接口访问。如果你需要在实现接口的类之间共享某些功能,可以考虑使用抽象基类(abstract class)或者将这些功能封装到一个单独的类中,然后通过组合或继承的方式在其他类中使用这些功能。