在 Prism MVVM 应用程序中使用串行端口 Class 库

Using Serial Port Class Library in Prism MVVM Application

我继承了一个 WPF/Prism/Unity MVVM 应用程序,我需要在 Class 库中 link 通过串行端口进行外部通信。串行端口库发布错误和消息的事件。

我是 Prism 的新手,但几年前我使用过 Unity。 Prism 应用程序(我们称之为 PrismApp)是一个基本的 PrismApplication,具有两个模块:main 和 settings。我的串行端口库(我们称之为 LibSerial)包装了基本通信协议并发布了三个事件:ConnectionEventReceived、ErrorEvent 和 MessageReceived。 LibSerial 具有 Connect、StartSession 和 Send 函数。

我的问题是:

谢谢大家!

Where do I instantiate my LibSerial?

在你的引导程序中注册它并让容器实例化它。在 App.xaml.cs 中覆盖 PrismApplication class 的 RegisterTypes 方法并注册 LibSerial 类型:

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.RegisterSingleton<ILibSerial, LibSerial>();
}

然后您可以使用 ILibSerial 注入您的视图模型(在本例中是 LibSerial class 实现的接口)并连接其事件并访问其成员像往常一样:

public class ViewModel
{
    public ViewModel(ILibSerial libSerial)
    {
        libSeriel.MessageReceived += ...;
    }
}

容器将负责实例化,如果您在引导程序中使用 RegisterSingleton 方法注册类型,则只会创建一个实例并在所有视图模型中共享。