首页 > 解决方案 > 将一种类型理解为另一种类型

问题描述

假设我有一个 classA和一个 class B

class A {
    public void foo1(){ print("foo1"); }
    public void foo2(){ print("foo2"); }

    ...
    public void fooN(){ print("fooN"); }
}

class B {
    public A a;
}

当我调用 时B,我希望它表现得好像它是 的一个实例A,所以我可以这样做:

B b = new B();
B.a = new A();
B.foo1();

我怎样才能实现这种行为?我尝试添加此功能,B但没有奏效:

public static implicit operator A(B instance) { return instance.a; } 

PS:A不能继承。

标签: c#

解决方案


如果您想将B.foo1()B 类更改为:

class B
{
    public void foo1() {
      if(a!=null) a.foo1();
    }
    .........
    .........
    public A a {get; set;}
}

任何其他方式您将无法编译您的代码。b.foo1()将给出编译器错误。您可以使用反射并调用类似的东西,b.aMethod("foo1")但这是一个不同的故事。


推荐阅读