Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KhaosDoctor

Fazendo o usuário criar suas próprias subs

Recommended Posts

Olá!

 

Estou trabalhando em um projeto com um amigo e ele estava bem simples, até que resolvemos inserir algo que nunca vimos antes.

 

O projeto se baseia em uma unica DLL de referencia, ou seja, todas as funções são tiradas de lá, porém à medida que fazemos o projeto percebemos que precisamos de mais funções e logo temos que adicioná-las a DLL. Então surgimos com a grande ideia de poder adicionar subs e programações próprias através de uma GUI de texto ou então direto pelo próprio código da dll.

 

Em suma, o que queremos fazer é criar uma função ou uma sub dentro da DLL que permita que o usuário adicione suas próprias classes, subs, properties, namespaces, functions e etc, tudo através de uma unica linha de comando, por exemplo:

 

DLL.AddNewClass(className as String, ClassContext as String)

 

Sendo usado assim:

 

DLL.AddNewClass("Nova classe", "Public class Nova Classe

private sub A()

dim a as string .....")

 

Porem eu nunca vi nada parecido com isso, não sei se é possível adicionar programação por programação, ou seja, se é possível inserir mais linhas de código dentro de um programa com ele rodando, não linhas relacionadas a eventos, mas sim subs independentes, ou então funções completas que seriam armazenadas no namespace "User", dentro deste namespace o usuário poderia adicionar suas classes com functions e subs dentro delas para realizar seja qual for a função que ele deseja.

 

Sintetizando, é um application que pode ser estendido infinitamente.

 

Estou usando VB.NET e tenho uma versão em C#.NET então qualquer ideia em qualquer uma das duas já será de grande ajuda.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é uma nova linguagem de programação, eu quero que o meu software possa criar dentro dele mesmo novas funções. Como o visual studio, porém eu não quero um programa que cria programas eu apenas quero que seja possível o usuário adicionar está dll no projeto dele e se ele quiser ele pode adicionar novas funções dentro desta dll

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso me intrometer sem saber bulhufas do assunto?

 

Porque você (s) não implementa (m) um base de plugins, extensões, complementos (não importa) E, ao Gerenciador de Plugins, implementa (m), também, um editor de códigos e um compilador/interpretador?

 

Dessa forma, eu imagino que você (s) não suje (m) a aplicação, não correm risco com código maliciosos, já que seu possível interpretador poderá analisar antes de permitir a compilação e ainda torna flexível.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A idéia é boa mas acho que vocês não entenderam kkk meu projeto não é um editor de códigos, muito menos um compilador.

 

É o seguinte, eu tenho um programa e uma dll, essa dll e a base do projeto, ou seja, ela é o ponto principal ela contém diversas funções úteis aos usuários e queria implementar nela uma funções que cria outras funções, como um código de programação para criar outras programações, por exemplo eu tenho uma função, mas eu sei que vou precisar de outra função para outro projeto, e então eu posso criar uma nova função dentro da dll através de código, ou seja, quero adicionar programação no programa através de programação

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ACHO que se o seu sistema é "widgetizável" (que palavra linda), tanto os usuários/programadores que utilizarem o sistema quanto o próprio sistema poderão usufruir da interface (não é Interface Visual) e criar plugins quase que em runtime.

 

Eu insisto nesse ponto porque nem todo módulo precisava de todas as funções adicionadas em runtime, ao passo que quando o primeiro módulo que precisa for acessado, se tal plugin não existir, ele será codificado, compilado e carregado.

 

Daí pra frente, só carregado.

 

Sem falar no O.C.P (Open Closed Principle) que será potencialmente violado na classe toda sempre que uma alteração ocorrer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, podemos dizer que ele é "widgetizável", mas o que eu quero é adicionar linhas de código dentro da DLL através de programação, quero escrever linhas de código através de linhas de código, e também quero que o usuário possa inserir as próprias funções dentro desta DLL através de uma pequena interface gráfica que viria juntamente com este "mini-framework" que seria apenas uma caixa de texto onde o usuário digitaria o código e a própria dll iria inseri-lo no sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso é mesmo viável? Imagina um programador entusiasmado colocando milhares de linhas de código na mesma DLL para usar num único módulo. Os outros módulos que não precisam terão um peso extra desnecessário.

 

Não sei como funciona essa linguagens e nem se você entende como o PHP funciona, mas existe nelas alguma forma de AutoLoad de componentes, através de regras de nomenclatura?

 

Porque se existir fica mais fácil pois você poderia manter N plugins diferentes, cada um para uma tarefa que seriam invocados ou instanciados a partir docontexto da DLL principal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim existem namespaces, eu dividi cada namespace da DLL em categorias distintas, sendo cada um com diversas funções internas que server para N coisas diferentes.

 

Caso consiga fazer isto, todos os "plugins" que o usuário criar iriam para o namespace "User", ou seja, tudo o que ele fez ficaria guardado em uma unica parte da biblioteca, totalmente independente dos demais módulos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.