一个类可以实现具有相同datamember名称但不同类型的多个接口吗?

时间:2013-05-11 09:18:29

标签: c# inheritance interface

我想知道是否有人可以建议一个类是否可以同时实现以下接口?

interface a1
{
   int mycount;
}

interface a2
{
   string mycount;
}

interface a3
{
   double mycount;
}

1 个答案:

答案 0 :(得分:6)

你的所有接口都不会编译,我会假设它们是方法而不是字段。

使用冲突的成员名实现多个接口的唯一方法是使用显式实现:

interface a1
{
   int mycount();
}

interface a2
{
   string mycount();
}


class Foo : a1, a2
{
    int a1.mycount()     { ... }
    string a2.mycount()  { ... }


    // you can _only_ access them through an interface reference
    // even Bar members need to typecast 'this' to call these methods
    void Bar()
    {
         var x = mycount();               // Error, won't compile
         var y = (this as a2).mycount();  // Ok, y is a string
    }
}