当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-19
考虑以下三个接口: 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 { ... }
    }
}
网友评论