如何在不使用c#中的实例的情况下从另一个类调用非静态方法

本文关键字:另一个 情况下 调用 静态方法 实例 | 更新日期: 2023-09-27 18:28:50

我知道这个问题已经被问过了,但这些答案并不完全令人满意。我正在用c#编写一个用于连接usb设备的wpf应用程序。我的非静态类Connections具有连接、断开连接等所有方法。由于我使用数据绑定、Icommand等,我必须从许多其他类访问该类。使我的类为静态不是一个选项,因为它需要更改太多代码,使用instatces也不是一个选择,因为我可能正在调用一个类的实例,但原始实例不会更改,所以绑定到该类的对象也不会更改。

所以我的问题是:如何从其他类访问Connections类?

如何在不使用c#中的实例的情况下从另一个类调用非静态方法

您必须选择:创建实例,或使用静态方法。时期

我建议使用将实例(可能通过接口公开)传递给视图模型或其他需要它的代码。在那里,您可以调用传入实例上的方法。

这一切都取决于Connections类的功能。

我能给出的最简单的答案是,假设各个方法不需要特定于实例的数据,就可以使它们成为静态的。

如果您的单个方法需要特定于实例的数据,那么您可以将该实例设置为单例实例(通过具有instance只读属性,或者配置IOC容器)。如果内存上下文中的每个人都将使用同一个实例,那么单例就可以工作。

如果需要不同的实例,但需要在某些项之间共享,那么您可以将代码的结构视为具有包含子ViewModel关心的实例的父ViewModel。然后,子级将具有对父级ViewModel的引用。

创建一个静态包装类,实例化您感兴趣的类的单例,然后您可以通过它访问方法和属性。

相关文章: