首页 > 解决方案 > 在 Prism MVVM 应用程序中使用串行端口类库

问题描述

我继承了一个 WPF/Prism/Unity MVVM 应用程序,我需要链接到一个通过串行端口与外部通信的类库。串行端口库发布错误和消息的事件。

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

我的问题是:

感谢大家!

标签: c#wpfserial-portunity-containerprism

解决方案


我在哪里实例化我的 LibSerial?

在您的引导程序中注册它并让容器实例化它。覆盖你的类的RegisterTypes方法并注册类型:PrismApplicationApp.xaml.csLibSerial

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

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

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

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


推荐阅读