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

时间:2016-01-04 13:29:44

标签: c# wpf data-binding

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

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

3 个答案:

答案 0 :(得分:4)

你必须选择: 你创建一个实例,你使用静态方法。周期。

我建议使用传递实例(可能通过接口公开)传递给视图模型或其他所需的代码。在传入的实例中调用方法。

答案 1 :(得分:1)

这完全取决于Connections类的功能。

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

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

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

答案 2 :(得分:0)

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