考虑以下三个接口: interface IBaseInterface{ event EventHandler SomeEvent;}interface IInterface1 : IBaseInterface{ ...}interface IInterface2 : IBaseInterface{ ...} 现在考虑以下实现IInterface1和IInterface 2的类: class F
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?
你可以使用泛型:interface IBaseInterface<T> where T : IBaseInterface<T> { event EventHandler SomeEvent; } interface IInterface1 : IBaseInterface<IInterface1> { ... } interface IInterface2 : IBaseInterface<IInterface2> { ... } class Foo : IInterface1, IInterface2 { event EventHandler IBaseInterface<IInterface1>.SomeEvent { add { ... } remove { ... } } event EventHandler IBaseInterface<IInterface2>.SomeEvent { add { ... } remove { ... } } }