Avançar para o conteúdo principal

CSharp - Dividir o código por DLL

CSharp - Dividir o código por DLL

Uma das formas de dividir e organizar o código pode ser pela criação de DLL, e estes podem ser aproveitados para vários projectos.


CSharp DLL

A criação de Bibliotecas DLL (biblioteca de vínculo dinâmico  microsoft)  pode ser uma forma de dividir e organizar o código. As DLL funcionam como um módulo externo, um conjunto de código que se coloca num ficheiro diferente do principal.

Com esta organização podemos também reaproveitar o código das DLL para outros projectos. Por exemplo uma biblioteca semelhante à apresentada no exemplo pode servir para vários projectos de engenharia.

Existem muitos assuntos relacionados com as DLL nos quais não vamos entrar aqui, inclusive o uso de DLL programadas em linguagens diferentes.


Exemplo:

O caso presente envolve dois ficheiros, um como se fosse o código principal, e um secundário que contém o código para a DLL.

teste_ang.cs é o ficheiro principal

ConverteAngulosDLL.cs é o ficheiro que vai dar origem ao DLL

(os nomes podem ser outros e não tem de ter DLL no nome, este foi apenas um exemplo)

Esquema de funcionamento

Na esquerda o ficheiro que vai dar origem ao DLL, não informação sobre o ficheiro principal ou algum dos seus métodos como é lógico. Este pode servir para múltiplos usos como referimos antes.


Na direita o ficheiro principal, este sim faz referencia ao DLL. Logo na uso da directiva using para importar os namespaces do DLL.

using Angulos vai importar o namespace do ficheiro DLL.

Depois temos de usar o prefixo como propriedade, da classe que queremos usar. No caso usamos Converte seguido do método que usaremos.

Converte.GrausGrados(200.001) dá acesso à classe Converte e ao método GrausGrados tudo isto no namespace Angulos do ficheiro DLL.

Entendido isto, é apenas código, para que tudo funcione temos de compilar, primeiro a DLL e depois o executável com a referência à DLL.


Como estou a usar o Mono para Linux (.net framework Mono) os comandos a seguir são diferentes na chamada ao compilador do que seriam no Windows.

  mcs /target:library /out:ConverteAngulos.dll /recurse:ConverteAngulosDLL.cs
  mcs /out:teste_ang.exe /reference:ConverteAngulos.dll /recurse:teste_ang.cs
  mono teste_ang.exe
A primeira linha chama o ficheiro de texto e compila para uma biblioteca (/target:library).
A segunda linha compila para executável, mas tem menção à bilioteca criada no passo anterior (/reference:ConverteAngulos.dll).
A terceira linha é apenas um comando para executar o programa.

Espero que seja útil.


Comentários

Mensagens populares deste blogue

ISPOL - Representação de Gabaris

ISPOL - Representação de Gabaris No ISPOL podemos representar ao longo do traçado um contorno e até realizar variações. A representação de um contorno ou gabari pode ser realizada no ISPOL de um modo simples, usando por exemplo um Símbolo (bloco) da biblioteca, ou um ou vários criados à medida para atender aos casos necessários. Na imagem abaixo um exemplo da biblioteca do ISPOL, representado no perfil transversal. Estas secções são constituídas por símbolos/blocos: Podem-se desenhar ao longo do eixo proporcionando a vista típica destas situações, uma espécie de sólido que enche o traçado. Além desta representação "simples" o ISPOL permite realizar transições entre símbolos diferentes, por exemplo para representar os diferentes gabaris em recta e curva. Ou outras situações que se achem necessárias. Permite ainda condicionar a representação destes símbolos por valores de raio. Isto é para um determinado raio. Pode ser usado para indicar de forma automática ao programa que em r...

Python - Automatização em ISPOL

Python - Automatização em ISPOL Com o uso de PyAutoGui podemos automatizar tarefas repetitivas no ISPOL ISTRAM. No trabalho actual, é necessário converter mais de 300 ficheiros. Já houve um trabalho prévio de ler e transformar dados de directrizes em Excel para ficheiros compatíveis com a conversão presente. Este trabalho prévio foi também feito com programação. Tendo os muitos ficheiros com formato TXT que o ISPOL pode ler e converter para CEJ, é necessário ir ao menu de Conversores do ISTRAM e digitar os dados para ler a localização dos ficheiros, número de eixo etc... um trabalho repetitivo. Sendo repetitivo uma hipótese que deve surgir é se existe forma de automatizar / programar. O ISTRAM ISPOL não permite o uso de plugins (como o CAD), por tanto a via seria pela automatização dos movimentos. O pacote PyAutoGUI para Python permite esta simulação de movimentos. https://pyautogui.readthedocs.io/en/latest/ Basicamente "guiamos" o cursor para onde deve clicar e o que introdu...

Kinematic Envelope - Vários exemplos

Kinematic Envelope - Vários exemplos Adiciono uma pequena lista de desenvolvimentos sobre o assunto de Gabaritos ferroviários. Para mais informação veja outros posts. AECOM Desenvolvimento no Civil 3D ao que parece, com dynamo. Não se percebe com que norma. https://youtu.be/BdRDICErJJ8?si=0MD8xGx_W1PCG5dP Mehdi Taheri Plataforma independente, não se conhece sobre que normativa. https://www.youtube.com/watch?v=LXUusfK25bs 12D Provavelmente é algo similar à AREMA, 12D é uma empresa da Austrália, creio https://www.youtube.com/watch?v=OQnaDt7IOXw