Demonstra Passo a passo: Expondo um modelo plug-in .NET
Esta explicação passo a passo demonstra como estender o exemplo de rabisco MFC clássico para que ofereça suporte a um modelo plug-in usando tecnologias .NET.
A solução MFC Rabisco é estendida para expor um modelo de objeto .NET.Além disso, o exemplo também expõe uma arquitetura de plug-in que permite que os plug-ins do .NET interagir diretamente com a solução Rabisco MFC.
Pré-requisitos
Exemplo do ScribbleDotNET: Estendendo o rabisco com recursos de CLR
Para compilação e executar esse exemplo
em aberto do arquivo de solução, Scribble.sln, no ambiente de desenvolvimento do Visual Studio.
compilação da solução usando ambos o Depurar or Versão configurações.
Em gerenciador de soluções abra plugins.xml solução Items.
No arquivo plugins.xml, alterar a primeira parte do caminho nos elementos assembly para corresponder à configuração criados em, por exemplo,Altere "VBShapes.dll" para "Debug\VBShapes.dll" e altere "CSPenColor.dll" para "Debug\CSPenColor.dll" Se você criou usando oDepurar configuração.
Inicie o executável compilado.
selecionar Plug-ins na BAR de menus.
- selecionar o Desenhar formas item de menu.Isso executará o VBShapes plug-in que irá desenhar os três contornos dos quadrados coloridos diferentes.
selecionar Plug-ins na BAR de menus.
- selecionar o Alterar cor da caneta item de menu.Isso executará CSPenColor plug-in que permitirá que você selecionar a cor da caneta através de uma caixa de diálogo de cor .NET.
Como ele funciona
Este exemplo é implementado em duas partes principais:
Expondo um modelo de objeto para os escritores usar plug-in
Duas interfaces principais estão expostos a implementar o plug-in do modelo (consulte o ScribbleApp projeto para definições dessas interfaces):
IScribbleApp – Essa interface expõe um conjunto de recursos que permitirá que o plug-in gravador interagir com um aplicativo de rabisco em execução. A interface é implementada pelo Rabisco (consulte ScribbleApp.cpp no projeto Rabisco) e uma instância da interface implementada é passada para a função de membro Run() de IScribblePlugin, discutido a seguir
IScribblePlugin – Esta interface é implementada pelo gravador plug-in. O plug-in gravador usará os recursos expostos por IScribbleApp para implementar seus plug-in.
Estender o aplicativo base do rabisco para localizar, carregar e executar os plug-ins
Primeiro, um arquivo XML que contém uma lista de plug-ins a ser carregado é analisado.Encontrado cada plug-in está carregado e verificado como sendo do tipo correto usando System.Reflection. Mais especificamente, usamos reflexão para pesquisar os tipos expostos pelo módulo de plug-in e certifique-se de que uma delas implementa o IPlugin interface que podemos ter expostos. A implementação para isso pode ser encontrada no PluginBld.cpp no projeto Rabisco.
CScribbleApp usa as rotinas implementadas em PluginBld.cpp para obter uma lista de todos os plugins descobertos. Para cada plug-in nessa lista um item de menu é dinamicamente criado sob o menu Plug-ins.Quando o usuário seleciona um item de menu de Plug-ins o plug-in apropriado será executado.
Tecnologias usadas
Usando o XML para especificar a localização do plug-ins
Usando a reflexão para verificar se o plug-in especificado no XML do arquivo é do tipo apropriado
Definir um modelo de objeto para a criação de plug-ins
Carregando e executando o plug-in em um aplicativo de C++