c# - 将一种类型理解为另一种类型
问题描述
假设我有一个 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
不能继承。
解决方案
如果您想将B.foo1()
B 类更改为:
class B
{
public void foo1() {
if(a!=null) a.foo1();
}
.........
.........
public A a {get; set;}
}
任何其他方式您将无法编译您的代码。b.foo1()
将给出编译器错误。您可以使用反射并调用类似的东西,b.aMethod("foo1")
但这是一个不同的故事。
推荐阅读
- javascript - 表单提交后停止页面重定向到php文件
- typo3 - 如何在 TYPO3 中设置默认 colPos
- openstack-cinder - 显示所有项目的煤渣配额使用情况?
- mysql - MySQL - 复制或更新一个表中的更改行
- apache-kafka - kafka 的 Confluent 和 Spring 模式注册表
- javascript - 浏览器 | 如何要求以前由 Browserify 创建的模块?
- mysql - MySQL 查询优化 LEFT JOIN 和 DISTINCT
- javascript - 如何防止ios中的后滑反应本机
- python - python在if语句中引发异常
- r - 尽管 xpath 似乎是正确的,但找不到元素