我继承了WPF / Prism / Unity MVVM应用程序,我需要链接到通过串行端口与外部进行通信的类库中。串行端口库发布事件以获取错误和消息。
我是Prism的新手,但几年前我已经使用Unity。 Prism应用程序(简称为PrismApp)是基本的PrismApplication,具有两个模块:main和settings。我的串行端口库(我们称其为LibSerial)包装了基本的通信协议并发布了三个事件:ConnectionEventReceived,ErrorEvent和MessageReceived。 LibSerial具有Connect,StartSession和Send的功能。
我的问题是:
谢谢大家!
答案 0 :(得分:1)
我在哪里实例化我的LibSerial?
将其注册到您的引导程序中,然后让容器实例化它。覆盖RegisterTypes
中PrismApplication
类的App.xaml.cs
方法,并注册LibSerial
类型:
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<ILibSerial, LibSerial>();
}
然后,您可以使用ILibSerial
(在这种情况下,是LibSerial
类实现的接口)为视图模型注入并挂钩其事件并照常访问其成员:
public class ViewModel
{
public ViewModel(ILibSerial libSerial)
{
libSeriel.MessageReceived += ...;
}
}
该容器将负责实例化,并且只要您在引导程序中使用RegisterSingleton
方法注册类型,该容器将仅创建一个实例并在所有视图模型之间共享。