【发布时间】:2013-08-10 17:04:19
【问题描述】:
我有三个类,我们称它们为 A、B 和 C。现在考虑以下代码:
public class A{
A(){}
methodOfA(){}
}
public class B{
A a = new A();
}
public class C{
//Here i want to access a.methodOfA() without creating a new instance of the class A.
//I want to achieve this only using the instance 'a' created in class B
}
这可能吗?如果没有,请告诉我解决方案。我的应用程序限制我在 C 类中创建 A 的新实例。这是因为我正在使用 WPF 在 C# 中构建音乐播放器应用程序。
B 类是我的 mainwindow.cs,它会一直运行直到应用退出。 A 类包含所有方法,如 play()、pause() 等。 B 类调用 C 类中的一个方法(在按钮单击事件上),该方法又必须使用在 B 中创建的相同实例调用 A 类中的 play() 之类的方法,因为该实例已经在运行并且该函数必须基于执行在那个实例上。
我已经在C类中继承了外部库。而C#不支持多重继承。
【问题讨论】:
-
methodOFA公开吗? -
提供一个将A类的实例封装在B中的属性。
public class B { A a = new A(); public A GetA { get { return a }; } -
我认为多重继承没有任何帮助 - 如果你有一个例子 - 请发布它,否则感觉就像空洞的咆哮......
-
了解
C中方法的返回类型也会有所帮助,因为如果它是可变的,那么您可能永远不需要在 C 中调用 A.. -
这就是我的意思,如果它返回一个布尔值,那么您可以使用该返回值在您的方法返回到 B 之后,然后让 B 在 A 中调用它需要的方法
标签: c# wpf class oop multiple-inheritance