0

我有三个类,我们称它们为 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# 不支持多重继承。

4

1 回答 1

2

如果您有三个单独的类,大概是这样每个类都在您的对象模型中履行不同的职责。

如果您需要直接从 C 访问 A,鉴于当前的设计,您的对象模型中可能存在缺陷。

您可以通过让 B 代表 B 的使用者在 A 中调用该功能的责任来解决直接问题。为此,请在 B 中创建一个包装器方法,该方法在 A 上调用适当的方法。

您提到 C# 不支持多重继承。确实如此,但它确实允许您在单个类中实现多个接口。这可能是一个合适的选择,具体取决于您实际问题的具体细节。

于 2013-08-08T20:15:57.817 回答