在 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 函数。
我的问题是:
- 我在哪里实例化我的 LibSerial?我是为它创建一个模型还是可以在我的基础 PrismApplication 中实例化 LibSerial?
- 如何将事件发布到我的 ViewModel?我假设我会在某处使用 LibSerial 事件并使用 EventAggregator 将各种 EventArgs 推送到视图模型中?
- 如何从 PrismApp 中调用我的 LibSerial start/startsession/send 函数?那会是调用 pubsub.publish 的 ViewModel 中的 DeleagateCommand 吗?
谢谢大家!
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
方法注册类型,则只会创建一个实例并在所有视图模型中共享。
我继承了一个 WPF/Prism/Unity MVVM 应用程序,我需要在 Class 库中 link 通过串行端口进行外部通信。串行端口库发布错误和消息的事件。
我是 Prism 的新手,但几年前我使用过 Unity。 Prism 应用程序(我们称之为 PrismApp)是一个基本的 PrismApplication,具有两个模块:main 和 settings。我的串行端口库(我们称之为 LibSerial)包装了基本通信协议并发布了三个事件:ConnectionEventReceived、ErrorEvent 和 MessageReceived。 LibSerial 具有 Connect、StartSession 和 Send 函数。
我的问题是:
- 我在哪里实例化我的 LibSerial?我是为它创建一个模型还是可以在我的基础 PrismApplication 中实例化 LibSerial?
- 如何将事件发布到我的 ViewModel?我假设我会在某处使用 LibSerial 事件并使用 EventAggregator 将各种 EventArgs 推送到视图模型中?
- 如何从 PrismApp 中调用我的 LibSerial start/startsession/send 函数?那会是调用 pubsub.publish 的 ViewModel 中的 DeleagateCommand 吗?
谢谢大家!
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
方法注册类型,则只会创建一个实例并在所有视图模型中共享。