C# 如何在另一个prism模块中等待方法?
我一直在玩prism,并决定使用prism+WPf+Unity将应用程序转换为模块化prism应用程序 这个应用程序与不同的硬件进行通信,所以第一件事是将我所有的硬件类放在不同的模块中 以我的摄像头类为例,它通过以太网与摄像头系统进行对话 假设我的相机课在棱镜转换之前是这样的C# 如何在另一个prism模块中等待方法?,c#,wpf,unity-container,prism,C#,Wpf,Unity Container,Prism,我一直在玩prism,并决定使用prism+WPf+Unity将应用程序转换为模块化prism应用程序 这个应用程序与不同的硬件进行通信,所以第一件事是将我所有的硬件类放在不同的模块中 以我的摄像头类为例,它通过以太网与摄像头系统进行对话 假设我的相机课在棱镜转换之前是这样的 Public Class Camera { // bunch of properties public Task<bool> TakePhoto() { return
Public Class Camera
{
// bunch of properties
public Task<bool> TakePhoto()
{
return Task.Run(()=>
{
// ...
// Do taking photo stuff
// ...
return CameraPhotoTakenResult; // Return result of taking photo
});
}
}
据我所知,我现在必须使用EventAggregator来触发相机,这很好,但这是否意味着我必须使用另一个事件来发回结果?如果是这样的话,我如何修改我的代码来等待呢?您可以正常使用该类型。将类的公共接口分解为一个公共项目,您的硬件模块和使用者都将引用该项目。您的硬件模块在某种依赖注入容器中注册一个类。我的示例将使用Unity:
public class HardwareModule : IModule
{
IUnityContainer _container;
public HardwareModule(IUnityContainer container)
{
_container = container;
}
public void Initialize()
{
_container.RegisterType<ICamera, Camera>();
}
}
谢谢你,我会提前给你的
public class HardwareModule : IModule
{
IUnityContainer _container;
public HardwareModule(IUnityContainer container)
{
_container = container;
}
public void Initialize()
{
_container.RegisterType<ICamera, Camera>();
}
}
public class HardwareConsumer
{
IUnityContainer _container;
public HardwareConsumer(IUnityContainer container)
{
_container = container;
}
public async void TakePhoto()
{
ICamera camera = _container.Resolve<ICamera>();
var result = await camera.TakePhoto;
}
}
public class HardwareConsumer2
{
ICamera _camera;
public HardwareConsumer2(ICamera camera)
{
_camera = camera;
}
public async void TakePhoto()
{
var result = await _camera.TakePhoto;
}
}