我有一个场景,我希望能够通过一个方法参数传递一个类,并从传递的类的实例中获取类特定的信息。C# - 通过参数传递继承类
例子:
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));
这将得到一个特定于类“Bar”的值,该值是Foo类的“Inherits”。
我需要能够做到这一点没有typcasting,以便该类将被动态处理。
我知道,我只能说
((Bar)f).y
然而,问题是我将不得不通过传递多个类和静态类型转换将击败目的。
为什么没有定义那么在Foo中呢?特别是如果你想要在任何继承的类中获得y值。 – juharr 2014-10-29 12:28:58
但它击败了面向对象的编程。你不能准备界面,f.e用'y'属性吗? – 2014-10-29 12:29:07
查看MSDN的“标识符模式”的链接:http://msdn.microsoft.com/de-de/library/dd547125.aspx。它在F#中,而不是C#,但我想这就是你想要实现的。如果您希望可以发布一些与F#代码完全相同的C#代码。 – DMAN 2014-10-29 12:36:15