none
Sobrecarga de construtores + Especialização RRS feed

  • Pergunta

  • Pessoal,

    Tenho uma situação que não consigo resolver é o seguinte

    Tenho uma base chamada busMaster

    public class busMaster{}

    e uma especializacao dela

    public class Regulamentavel:busMaster{}

    tenho ainda uma terceira classe chamada CadControlMaster que possui 2 contrutores:

    //Contrutor1

    public CadControlMaster(busMaster obj){}

    //Contrutor2

    public CadControlMaster(Regulamentavel obj){}

    Tenho um objeto Cliente que herda de regulamentavel

    public class Cliente:Regulamentavel{

    }

    Mas quando eu passo ele como parâmetro para a classe CadControlMaster ele não está passando no segundo construtor, mas sim no primeiro. Mesmo que eu faça um cast para o tipo mais específico antes de passar o argumento:

    new CadControlMaster((Regulamentavel) new Cliente());

    Ele passa no primeiro.

    Como faço para que quando o objeto herdar do tipo mais específico ele passar no segundo construtor.


    terça-feira, 3 de abril de 2012 17:58

Respostas

  • Vinicius, estranho eu fiz sua aplicação no que eu entendi dela e funcionou:

    public class Program
        {
            
            static void Main(string[] args)
            {
                Cliente cliente = new Cliente();
                CadControlMaster master = new CadControlMaster(cliente);
    
                busMaster busMaster = new busMaster();
                master = new CadControlMaster(busMaster);
    
                Console.ReadLine();
            }
    
        }
    
        public class busMaster
        {
            public busMaster() { Console.WriteLine("busMaster"); }
        }
    
        public class Regulamentavel : busMaster
        {
            public Regulamentavel() { Console.WriteLine("Regulamentavel"); }
        }
    
        public class Cliente : Regulamentavel
        {
            public Cliente() { Console.WriteLine("Cliente"); }
        }
    
        public class CadControlMaster
        {
            public CadControlMaster(busMaster obj)
            {
                Console.WriteLine("CadControlMaster:busMaster");
            }
            public CadControlMaster(Regulamentavel obj)
            {
                Console.WriteLine("CadControlMaster:Regulamentavel");
            }
        }


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    • Marcado como Resposta Vinicius Vieira terça-feira, 3 de abril de 2012 19:50
    terça-feira, 3 de abril de 2012 19:05
    Moderador

Todas as Respostas

  • Vinicius, estranho eu fiz sua aplicação no que eu entendi dela e funcionou:

    public class Program
        {
            
            static void Main(string[] args)
            {
                Cliente cliente = new Cliente();
                CadControlMaster master = new CadControlMaster(cliente);
    
                busMaster busMaster = new busMaster();
                master = new CadControlMaster(busMaster);
    
                Console.ReadLine();
            }
    
        }
    
        public class busMaster
        {
            public busMaster() { Console.WriteLine("busMaster"); }
        }
    
        public class Regulamentavel : busMaster
        {
            public Regulamentavel() { Console.WriteLine("Regulamentavel"); }
        }
    
        public class Cliente : Regulamentavel
        {
            public Cliente() { Console.WriteLine("Cliente"); }
        }
    
        public class CadControlMaster
        {
            public CadControlMaster(busMaster obj)
            {
                Console.WriteLine("CadControlMaster:busMaster");
            }
            public CadControlMaster(Regulamentavel obj)
            {
                Console.WriteLine("CadControlMaster:Regulamentavel");
            }
        }


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    • Marcado como Resposta Vinicius Vieira terça-feira, 3 de abril de 2012 19:50
    terça-feira, 3 de abril de 2012 19:05
    Moderador
  • Você tem razão.

    Meu caso é mais complexo simplifiquei no exemplo e agora entendi qual é o problema.

    Obrigado.

    terça-feira, 3 de abril de 2012 19:51