两个如何从两个源(视图)和其他模块并行交互

How two interact from two sources (view) and other Module in parallel

我有一个硬件模块,可以从用户视图和另一个模块进行交互。

问题:

我是否可以在 MyModule_A 中创建一个单例实例,将此实例注册到我的容器中并使用此容器来解析 MyModule_B 中的实例?

我必须使用 Eventaggregator 在两个模块之间进行通信吗?

棱镜文档在那种情况下对我来说不清楚。

使用共享服务,即:

Shall I create a singleton instance in the MyModule_A, register this instance two my container and use this container to resolve the instance in MyModule_B?

在模块 a 和模块 b 引用的第三个程序集(不是模块)中为您的驱动程序创建一个接口。然后在模块a中注册驱动程序,并将其注入视图模型或模块b或c甚至a中的任何内容。

素描:

// in the interface-assembly:

public interface IDriver
{
    bool ReadSensor();
}

// in module a:

internal class MyDriver : IDriver ...

public class MyModuleA : IModule
{
    public void Initialize()
    {
        _container.RegisterType<IDriver, MyDriver>( new ContainerControlledLifetimeManager() );
    }
}

// in module b:

internal class MyViewModel
{
    public MyViewModel( IDriver theHardware ) ...
}