具有灵活功能的超级类型

本文关键字:类型 功能 | 更新日期: 2023-09-27 18:19:22

我该如何实现这个呢:

  • 我有3种类型(实际上是接口):A, B和C
  • A没有方法,但B和C有一些方法。
  • 我希望类型A在某些情况下可以转换为类型B并使用B方法,在其他情况下转换为类型C并使用其方法?

具有灵活功能的超级类型

class Program
{
    interface A { }
    interface B :A { void b(); } // B inherits from A
    interface C :A { void c(); } // C also inherits from A
    static void Main()
    {
      // declare vars
      A a = null;
      B b = null;
      C c = null;
      // a can happily hold references for B.
      a = b;
      // To call B's methods you need to cast it to B.
      ((B)a).b();

      // a can happily hold references for C.
      a = c;
      // To call C's methods you need to cast it to C.
      a = c;
      ((C)a).c(); 
    }
}

从你的评论

class Program
  {
    private interface A { }
    private interface B : A { string b();}
    private interface C : A { string c();}
    class BClass : B { public string b() { return "B"; } }
    class CClass : C { public string c() { return "C"; } }
    private static void Main()
    {
      A a = null;
      B b = new BClass();
      C c = new CClass();
      a = b;
      ((B)a).b();
      a = c;
      ((C)a).c();
    }    
  }