从其他接口inheritance的接口的显式C#接口实现

考虑以下三个接口:

interface IBaseInterface { event EventHandler SomeEvent; } interface IInterface1 : IBaseInterface { ... } interface IInterface2 : IBaseInterface { ... } 

现在考虑以下实现IInterface1和IInterface 2的类:

 class Foo : IInterface1, IInterface2 { event EventHandler IInterface1.SomeEvent { add { ... } remove { ... } } event EventHandler IInterface2.SomeEvent { add { ... } remove { ... } } } 

这会导致错误,因为SomeEvent不是IInterface1或IInterface2的一部分,它是IBaseInterface的一部分。

类Foo如何实现IInterface1和IInterface2?

你可以使用generics:

 interface IBaseInterface where T : IBaseInterface { event EventHandler SomeEvent; } interface IInterface1 : IBaseInterface { ... } interface IInterface2 : IBaseInterface { ... } class Foo : IInterface1, IInterface2 { event EventHandler IBaseInterface.SomeEvent { add { ... } remove { ... } } event EventHandler IBaseInterface.SomeEvent { add { ... } remove { ... } } } 

SomeEvent不是IInterface1或IInterface2的一部分,它是IBaseInterface的一部分。

 class Foo : IInterface1, IInterface2 { event EventHandler IBaseInterface.SomeEvent { add { ... } remove { ... } } } 
 interface IBaseInterface { event EventHandler SomeEvent; } interface IInterface1 : IBaseInterface { event EventHandler SomeEvent; } interface IInterface2 : IBaseInterface { event EventHandler SomeEvent; } class Foo : IInterface1, IInterface2 { public event EventHandler SomeEvent { add { } remove { } } event EventHandler IInterface1.SomeEvent { add { } remove { } } event EventHandler IInterface2.SomeEvent { add { } remove { } } }