none
Instanciando uma Classe RRS feed

  • Pergunta

  • Boa noite pessoa.

    Tenho uma classe definida em uma camada do meu projeto. Essa classe tem vários métodos staticos.

       public class UDownloadXMLNFeDLL
        {
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool Proxy(string Host, int Port, string User, string Pass);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool Captcha(string SalvarEm);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern void Https(int Sim);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern string GetCertificadoDigital();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern string Msg();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern void SetCertificadoDigital(string CertSerialNumber);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool BaixarXMLNFeSemCert(string Chave, string Captcha, string SalvarEm);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool BaixarXMLNFeComCert(string Chave, string Captcha, string SalvarEm);
    
            [DllImport("BaixarXMLNFe.dll")]
            public static extern bool BaixarXMLNFeComCertAuto(string Chave, string SalvarEm, string ChaveLeitorCaptcha, int Tentativas, int MostrarProgresso);
        
            [DllImport("BaixarXMLNFe.dll")]
            public static extern bool BaixarXMLNFeSemCertAuto(string Chave, string SalvarEm, string ChaveLeitorCaptcha, int Tentativas, int MostrarProgresso);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern void DLLLicenca(string Chave);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool CaptchaLer(string ChaveCaptcha, string ArquivoImagem);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern string CaptchaLerTexto();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool Imprimir(string ArquivoXML, string LogoMarca);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public static extern bool ExportarPDF(string ArquivoXML, string LogoMarca, string PDF);
    
            [DllImport("BaixarXMLNFe.dll")]
            public static extern void DLLRegistra(string PastaDestino);
    
        } // end UDownloadXMLNFeDLL
    }

    No meu form eu instancio a classe. Normal, porém no momento que eu tento acessar o método statico ele não reconhece o método.

    Eu instancio dessa forma:           

    UDownloadXMLNFeDLLXmlNota = newUDownloadXMLNFeDLL();

    XmlNota.

    No momento que eu digito XmlNota, ele não me dá a opção de escolher o método que eu preciso
      

    public static extern bool Captcha(string SalvarEm);

    Parece que ele não está enxergando, alguém pode me ajudar a resolver esse problema?

    Muito Obrigado

    Garibaldo

    sexta-feira, 27 de fevereiro de 2015 02:26

Respostas

  • Sua classe deve ficar assim :
    static class UDownloadXMLNFeDLL
        {
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool Proxy(string Host, int Port, string User, string Pass);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool Captcha(string SalvarEm);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern void Https(int Sim);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern string GetCertificadoDigital();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern string Msg();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern void SetCertificadoDigital(string CertSerialNumber);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeSemCert(string Chave, string Captcha, string SalvarEm);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeComCert(string Chave, string Captcha, string SalvarEm);
    
            [DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeComCertAuto(string Chave, string SalvarEm, string ChaveLeitorCaptcha, int Tentativas, int MostrarProgresso);
        
            [DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeSemCertAuto(string Chave, string SalvarEm, string ChaveLeitorCaptcha, int Tentativas, int MostrarProgresso);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern void DLLLicenca(string Chave);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool CaptchaLer(string ChaveCaptcha, string ArquivoImagem);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern string CaptchaLerTexto();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool Imprimir(string ArquivoXML, string LogoMarca);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool ExportarPDF(string ArquivoXML, string LogoMarca, string PDF);
    
            [DllImport("BaixarXMLNFe.dll")]
            public extern void DLLRegistra(string PastaDestino);
    
        } // end UDownloadXMLNFeDLL
    }

    Você instancia ela
    //Classe           nomeDaInstancia   
    UDownloadXMLNFeDLL  novaClasse =  new UDownloadXMLNFeDLL()
    E chama o método:

    string minha chave = novaClasse.DLLLicenca("string chave");
    Mais ou menos assim meu caro, qualuqer dúvida pode chamar \o

    "Study, study and study more, there is no easy way..."

    sexta-feira, 27 de fevereiro de 2015 18:23

Todas as Respostas

  • Poe a declaração da sua classe como statica e os métodos como publicos

    "Study, study and study more, there is no easy way..."

    sexta-feira, 27 de fevereiro de 2015 13:36
  • André boa tarde.

    os meus métodos já são públicos, ou não?

    e a classe també é pública.

    Garibaldo

    sexta-feira, 27 de fevereiro de 2015 15:11
  • Boa tarde!

    A princípio, como os seus métodos são estáticos, você deve acessá-los diretamente, sem declarar uma instância da classe:  

    object o = UDownloadXMLNFeDLL.BaixarXMLNFeComCert("", "", "");

    Bom trabalho!

    sexta-feira, 27 de fevereiro de 2015 16:10
  • Oi André,

    Sou novo no C# e estou tendo alguns problemas de instanciamento.

    No caso acima como devo fazer para do meu form conseguir acessar o método Captcha.

    Garibaldo

    sexta-feira, 27 de fevereiro de 2015 16:19
  • Sua classe deve ficar assim :
    static class UDownloadXMLNFeDLL
        {
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool Proxy(string Host, int Port, string User, string Pass);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool Captcha(string SalvarEm);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern void Https(int Sim);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern string GetCertificadoDigital();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern string Msg();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern void SetCertificadoDigital(string CertSerialNumber);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeSemCert(string Chave, string Captcha, string SalvarEm);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeComCert(string Chave, string Captcha, string SalvarEm);
    
            [DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeComCertAuto(string Chave, string SalvarEm, string ChaveLeitorCaptcha, int Tentativas, int MostrarProgresso);
        
            [DllImport("BaixarXMLNFe.dll")]
            public extern bool BaixarXMLNFeSemCertAuto(string Chave, string SalvarEm, string ChaveLeitorCaptcha, int Tentativas, int MostrarProgresso);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern void DLLLicenca(string Chave);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool CaptchaLer(string ChaveCaptcha, string ArquivoImagem);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern string CaptchaLerTexto();
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool Imprimir(string ArquivoXML, string LogoMarca);
    
            [ DllImport("BaixarXMLNFe.dll")]
            public extern bool ExportarPDF(string ArquivoXML, string LogoMarca, string PDF);
    
            [DllImport("BaixarXMLNFe.dll")]
            public extern void DLLRegistra(string PastaDestino);
    
        } // end UDownloadXMLNFeDLL
    }

    Você instancia ela
    //Classe           nomeDaInstancia   
    UDownloadXMLNFeDLL  novaClasse =  new UDownloadXMLNFeDLL()
    E chama o método:

    string minha chave = novaClasse.DLLLicenca("string chave");
    Mais ou menos assim meu caro, qualuqer dúvida pode chamar \o

    "Study, study and study more, there is no easy way..."

    sexta-feira, 27 de fevereiro de 2015 18:23
  • Boa tarde Garibaldo,

    eu estou iniciando o projeto de NFe e estou pelejando pra entender como funciona a NFe. Essa dll que vc está usando faz todo o trabalho de enviar e receber a NFe?

    sexta-feira, 27 de fevereiro de 2015 18:53
  • Boa noite Eugenio,

    eu estou desenvolvendo um projeto de CTe e necessito que o programa busque no site da receita os dados da NFe(XML), então procurando com um amigo ele me indicou uma pessoal que tinha essa DLL. Porém, a DLL é em Delphi, eu apenas estou mexendo em meu programa criando classes que busque a DLL e retorne o XML, na máquina.

    Garibaldo

    sábado, 28 de fevereiro de 2015 02:02
  • Garibaldo,

    mesmo sendo em Delphi, você consegue trabalhar com a DLL no Visual Studio? Ela é free e 100% confiável pra incluir no projeto?

    Essa DLL permite gerar a NFe, enviar e receber dados? É possível vc me enviar esse arquivo?

    sábado, 28 de fevereiro de 2015 13:40
  • Olha Eugenio,

    estou começando a fazer os testes agora, porém, está dando uns erros que não estou conseguindo entender. A pessoa que me forneceu a DLL, disse-me que funciona, porém, ainda estou testando.

    Garibaldo

    sábado, 28 de fevereiro de 2015 19:47
  • Certo, vc pode me enviar esse arquivo DLL?
    sábado, 28 de fevereiro de 2015 23:46
  • Boa tarde Eugenio,

    Essa DLL foi me vendida por uma pessoa de Aracaju, não sei se diante dessa situação, você ainda continua interessado. Se ainda estiver interessado vou conversar com ele e se ele autorizar passo o email dele e você entra em contato direto com ele.

    Garibaldo

    terça-feira, 3 de março de 2015 17:16
  • Outra coisa Eugenio, já fiz os teste4s e está funcionando certinho, vai no site da Receita e traz o XML da NFe certinho

    Garibaldo

    terça-feira, 3 de março de 2015 17:58
  • Bom dia Garibaldo,

    pode ser, manda o e-mail dele.

    quarta-feira, 4 de março de 2015 12:37
  • Eugenio boa tarde, primeiro não te conheço, porém, se a .DLL fosse minha, eu diponibilizaria de graça na internet. Para mim o que importa é o projeto completo, aí sim não tem como  a gente disponibilizá-lo, mas umas DLLs não tem nada de mais. É até uma forma de estarmos trocando informações e de estarmos ajudando outros programadores de aprimorar os conhecimentos.

    Porém, segue o email solicitado:

    fernando-mm@hotmail.com

    Garibaldo

    quarta-feira, 4 de março de 2015 18:54
  • Bom dia Garibaldo,

    entendo seu lado, não tem problema. Obrigado por me enviar o contato.

    quinta-feira, 5 de março de 2015 12:23