public TRenderer Get <TRenderer>(String name)
            where TRenderer : class, IRenderer
        {
            LayerRendererRegistryKey key = new LayerRendererRegistryKey(null, name);
            IRenderer renderer;

            if (!_renderers.TryGetValue(key, out renderer))
            {
                return(null);
            }

            return(renderer as TRenderer);
        }
        public TRenderer Get <TRenderer, TLayer>()
            where TRenderer : class, IRenderer
        {
            Type layerType = typeof(TLayer);
            LayerRendererRegistryKey key = new LayerRendererRegistryKey(layerType, null);
            IRenderer renderer;

            if (!_renderers.TryGetValue(key, out renderer))
            {
                return(null);
            }

            return(renderer as TRenderer);
        }
        public TRenderer Get <TRenderer>(ILayer layer)
            where TRenderer : class, IRenderer
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }

            LayerRendererRegistryKey key = new LayerRendererRegistryKey(null, layer.LayerName);
            IRenderer renderer;

            if (!_renderers.TryGetValue(key, out renderer))
            {
                key = new LayerRendererRegistryKey(layer.GetType(), null);

                if (!_renderers.TryGetValue(key, out renderer))
                {
                    return(null);
                }
            }

            return(renderer as TRenderer);
        }
        public void Register(Type layerType, IRenderer renderer)
        {
            LayerRendererRegistryKey key = new LayerRendererRegistryKey(layerType, null);

            _renderers[key] = renderer;
        }
        public void Register(String layerName, IRenderer renderer)
        {
            LayerRendererRegistryKey key = new LayerRendererRegistryKey(null, layerName);

            _renderers[key] = renderer;
        }