考虑以下三个界面:
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?
答案 0 :(得分:4)
SomeEvent不是IInterface1或IInterface2的一部分,它是IBaseInterface的一部分。
class Foo : IInterface1, IInterface2
{
event EventHandler IBaseInterface.SomeEvent {
add { ... }
remove { ... }
}
}
答案 1 :(得分:4)
您可以使用泛型:
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 { ... }
}
}
答案 2 :(得分:2)
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 { }
}
}