Usuário com melhor resposta
Chamar metodo apos outro?

Pergunta
-
Respostas
-
Olá Leonel,
Tudo depende do tipo retornado pelo seu método...
No seu exemplo, o método CalculaIcms será executado no objeto retornado pelo Metodo2, que por sua vez, é executado no objeto retornado pelo Metodo1.
Na verdade, essa expressão é apenas uma atalho para algo assim:
Code SnippetClasse cls = new Classe();
// Executa o Metodo1 e obtém o objeto de "AlgumaClasse"
AlgumaClasse obj1 = cls.Metodo1();
// Executa o Metodo2 no objeto retornado pelo Metodo1,
// e obtém o objeto de "AlgumaOutraClasse"
AlgumaOutraClasse obj2 = obj1.Metodo2();
// Agora sim, executa o método CalculaIcms no objeto retornado pelo Metodo2
decimal dec = obj2.CalculaIcms();
Respondendo sua pergunta, para exemplificar, vamos de trás para frente:
Primeiro passo, vamos criar uma classe chamada "Impostos", que possui o método CalculaIcms:
Code Snippetpublic class Impostos
{
public decimal CalculaIcms()
{
// "Faz de conta" que calculou e retornou 200,00 :)
return 200M;
}
}
Segundo passo, vamos criar uma classe chamada "Calculadora", que utiliza a classe Impostos no método Metodo2, e devolve um objeto da classe Impostos.
Code Snippetpublic class Calculadora
{
public Impostos Metodo2()
{
// Cria um novo objeto da classe "Impostos"
Impostos obj = new Impostos();
//...
// Retorna o objeto
return obj;
}
}
Por fim, vamos criar a sua classe chamada "Classe", que utiliza a classe Calculadora no metodo Metodo1, e devolve um objeto da classe Calculadora:
Code Snippetpublic class Classe
{
public Calculadora Metodo1()
{
// Cria um novo objeto da classe "Calculadora"
Calculadora obj = new Calculadora();
//...
// Retorna o objeto
return obj;
}
}
Agora basta fazer a chamada que você quer para calcular o Icms:
Code SnippetClasse cls = new Classe();
decimal dec = cls.Metodo1().Metodo2().CalculaIcms();
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com
Todas as Respostas
-
Olá Leonel,
Tudo depende do tipo retornado pelo seu método...
No seu exemplo, o método CalculaIcms será executado no objeto retornado pelo Metodo2, que por sua vez, é executado no objeto retornado pelo Metodo1.
Na verdade, essa expressão é apenas uma atalho para algo assim:
Code SnippetClasse cls = new Classe();
// Executa o Metodo1 e obtém o objeto de "AlgumaClasse"
AlgumaClasse obj1 = cls.Metodo1();
// Executa o Metodo2 no objeto retornado pelo Metodo1,
// e obtém o objeto de "AlgumaOutraClasse"
AlgumaOutraClasse obj2 = obj1.Metodo2();
// Agora sim, executa o método CalculaIcms no objeto retornado pelo Metodo2
decimal dec = obj2.CalculaIcms();
Respondendo sua pergunta, para exemplificar, vamos de trás para frente:
Primeiro passo, vamos criar uma classe chamada "Impostos", que possui o método CalculaIcms:
Code Snippetpublic class Impostos
{
public decimal CalculaIcms()
{
// "Faz de conta" que calculou e retornou 200,00 :)
return 200M;
}
}
Segundo passo, vamos criar uma classe chamada "Calculadora", que utiliza a classe Impostos no método Metodo2, e devolve um objeto da classe Impostos.
Code Snippetpublic class Calculadora
{
public Impostos Metodo2()
{
// Cria um novo objeto da classe "Impostos"
Impostos obj = new Impostos();
//...
// Retorna o objeto
return obj;
}
}
Por fim, vamos criar a sua classe chamada "Classe", que utiliza a classe Calculadora no metodo Metodo1, e devolve um objeto da classe Calculadora:
Code Snippetpublic class Classe
{
public Calculadora Metodo1()
{
// Cria um novo objeto da classe "Calculadora"
Calculadora obj = new Calculadora();
//...
// Retorna o objeto
return obj;
}
}
Agora basta fazer a chamada que você quer para calcular o Icms:
Code SnippetClasse cls = new Classe();
decimal dec = cls.Metodo1().Metodo2().CalculaIcms();
Abraços,
Caio Proiete
Caio Proiete
http://www.caioproiete.com -
Só complementando a resposta do Caio, sugestão de alguns termos relacionados ao tema para facilitar a pesquisa:
Fluent Interfaces e Method Chaining.