1

所以在一个普通的 .net 程序集中我可以访问SystemInformation.VirtualScreen. 这将如何在 PCL 中完成?

4

1 回答 1

2

这就是我要做的:

  1. IVirtualScreen在你的 PCL 项目中引入一个抽象
  2. 在您的桌面类库(它引用 PCL 项目)中,提供一个适配器类以将其映射SystemInformation.VirtualScreen到您的 IVirtualScreen 接口。
  3. 在引导您的桌面应用程序时,将特定于平台的版本注册到您的 IoC 容器中。

    // in your PCL project
    public interface IVirtualScreen {
         Rectangle Current { get; 
    }
    
    
    // in your desktop project
    public interface DesktopScreen : IVirtualScreen {
       public Rectangle Current { 
         get {
            return System.Windows.Forms.SystemInformation.VirtualScreen;
       }
    }
    

但这引出了一个问题:这是您在 PCL 项目中需要的东西吗?

由于 UI 技术(WinForms/WPF/SL/WP7/WP8/WinRT)之间的根本差异,您最终可能会做很多特定于平台的事情,虽然您可以为移动应用程序插入不同的 IVirtualScreen 实现,但是否存在这样做的价值?

于 2013-01-27T07:41:07.277 回答