【发布时间】:2014-12-25 03:36:36
【问题描述】:
我有一个场景,我希望能够通过方法参数传递一个类,并从传递的类的实例中获取特定于类的信息。
例子:
public abstract class Foo {
public int x;
}
然后
public class Bar : Foo {
public int y;
public Bar(int y) {
this.y = y;
}
}
我需要做的是这样的事情
public void foobar(Foo f) {
int y = f.y;
}
会这样调用:
foobar(new Bar(5));
这将获得一个特定于“继承”类 Foo 的类“Bar”的值。
我需要能够在不进行类型转换的情况下执行此操作,以便动态处理该类。
我知道我只能说
((Bar)f).y
但是,关键是我将传递多个类,并且静态类型转换会破坏目的。
【问题讨论】:
-
那为什么不在 Foo 中定义 y 呢?特别是如果您要尝试在任何继承的类中获取 y 值。
-
但是它打败了面向对象的编程。你不能用
y属性准备接口f.e IBar吗? -
查看 MSDN 的“标识符模式”段落中的此链接:msdn.microsoft.com/de-de/library/dd547125.aspx。它在 F# 而不是 C# 中,但我想这就是你想要实现的。如果您想发布一些与 F# 代码相同的 C# 代码。
标签: c# inheritance dynamic methods parameters