如何从 DemoMap DotSpatial 程序中的插件访问地图控件

How to access Map control from plugins in the DemoMap DotSpatial program

我在我的应用程序中使用 DotSpatial DemoMap 作为主要前端,并且我创建了许多插件以在启动时加载到 DemoMap 中并且它们正在运行。但是,我不是很清楚如何让我的自定义插件访问主地图控件。

我在 DemoMap 的主窗体中看到,有 App.Map 属性 作为主地图控件的句柄(对吗?),如果这是真的,那么我想我需要在每个插件启动的时候传入吗?

最重要的是,什么是最 efficient/best 允许从所有自定义插件在整个应用程序中访问主地图控件的方法? (我在 .Net 4.5.2 上使用 DotSpatial 2.0 库)

源自 Extension 并通过 App.Map 属性.

访问 AppManger 提供的地图

扩展程序(插件)可以通过 App.Map 属性 访问地图。派生自 Extension 的任何 class 都可以访问,因此不需要将其传递到插件中。 允许您访问 属性 的 AppManager 是通过 MEF 自动注入的。

这是一个示例扩展

public class SimpleMapPlugin : Extension
{
    public SimpleMapPlugin()
    {
        // Access App.Map as needed.
    }
}