Jump to content
Sign in to follow this  
fjf

ajuda : createobject em c#

Recommended Posts

fjf

Ola ..

Estou a tentar criar uma rotina em c# para um webservice que aceda a um dll.

Em VB.net sei que posso fazer o código desta forma: 

      Public data As Date

      Dim wmsdoc As Object = CreateObject("MEUDLL.Documento")

            wmsdoc.CarregaDocumento(idDoc

            data = wmsdoc.Data

Mas como consigo fazer o mesmo com c# ?

ou seja eu nao quero referenciar o DLL no projecto mas quero usa-lo dentro  do codigo.Acedendo a funções e propriedades.

É que se não conseguir resolver este problema vou ter que desistir de programar em C# e fazer  o webservice em VB.net.

Eu preferia continuar o desenvolvimento em C#. Se não conseguir resolver o problema nos proximos dias ... vou ter que refazer o meu codigo todo em VB.net porque falta pouco para acabar o projecto ( apenas 2 / 3 rotinas) 

Obrigado pela ajuda ..

Share this post


Link to post
Share on other sites
fjf

Será que ninguem recisou de resolver este tipo de problemas ? Ou melhor será que não é possivel fazer este tipo de associacoes em C# ?

é que em VB.net isto é facil e automatico. Não consigo percebr é como se faz em c#.

Para explicar melhor o que se pretende,

pretendo criar um Webservice que apresenta uma lista de documentos, em que os documentos podem ser documentos de vendas , de compras ou stocks.

Ou seja para que seja transparente, o webservice poderá mostrar os detalhes comuns destes documentos, A data de criação, o tipo de documento a entidade associada etc.

ou seja o webservice vai ter uma classe que vai disponibilizar sempre a mesma informação independentemente do documento carregado.

o que pretendo fazer e em VB.net funciona perfeitamente com estas 3 linhas  de código

é:

            Dim doc As Object = CreateObject( TIPODOCUMENTO & ".Documento")

            doc.CarregaDocumento(idDoc)

           

            Data = doc.Data

            Tipodoc = doc.tipodoc

            entidade=doc.entidade

em que TIPODOCUMENTO pode ser "STOCKS", "VENDAS", "COMPRAS", "ETC" ... "ETC"

e os diferentes documentos têm o método carrega com os mesmos parametros e têm as mesmas propriedades a usar.

Já pesquisei em váris sites e não consigo encontrar como fazer ... e não consigo perceber como é que uma coisa q

Share this post


Link to post
Share on other sites
Betovsky

Eu não sei o que faz isso de VB. Mas pela tua descrição deves querer algo do género.

Assembly a = Assembly.LoadFile("meu.dll");
Object o = a.CreateInstance("MeuTipo");


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
fjf

     

Eu consigo chegar ao Create instance sem erros , mas depois não consigo usar as propriedades nem métodos ..

Estou a fazer desta forma :

          Type oTYPE = Type.GetTypeFromProgID("ModStocks.Documento");

            object oTemp = Activator.CreateInstance(oTYPE);

          MethodInfo theMethod = oTemp.GetType().GetMethod(@"Carrega");

          theMethod.Invoke(oTemp,  1);

Mas dá sempre erro ao invocar o método carrega !!!

Sou novo nisto e esto ua experimentar..

O componente

    ModStocks.dll

é um componente COM compilado em VB6

Obrigado pela ajuda !! É que eu queria mesmo fazer isto em c# .. mas como tenho mais experiencia em VB6 não consigo implementar em c#. Ainda estou muito «verde» em c# ... mas queria evoluir..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.