locked
Criando configurações em polimorfismo RRS feed

  • Pergunta

  • Meu nome é Arnaldo, trabalha no desenvolvimento de Sistemas tem coisa de 25 anos, porém agora chegou o tempo de me aprofundar mais em C# e ser mais profissional.

    Costumo desenvolver aplicações com base em herança e encontrei dificuldades em faze-lo no C# e agora depois de alguns dias tentando encontrar uma solução venho pedir ajuda.

    Criei um projeto WFA que servirá de base para os demais, segue a descrição:

    1. Criei um FormBase que tem variáveis públicas de controle, como o nome do operador, data e hora de acesso ao sistemas;

    2. Criei um FormBasePrincipal, que instancia FormBase, colocando neste um menu, barra de estatus, barra de ferramentas;

    3. Criei um FormBaseConsulta, que instancia FormBase, neste coloquei uma barra de ferramentas, um DataGridView , instanciei uma classe DAL que criei para conectar ao banco de dados (postgres, a princípio).

    Até aqui tudo funciona legal.



    Minha dificuldade e onde preciso de ajuda:

    Na classe FormBaseConsulta tenho um método para obter a string do SQL conforme segue:

            public virtual string getSCriptConsulta()
            {
                sScriprtSQL = "";

                return sScriprtSQL;
            }

    Na classe FormComEstados, que instancia FormBaseConsulta tem uma classe que define o SQL:

            public override string getSCriptConsulta() 
            {
                return "select ufcodigo as codigo, " +
                       "       ufsigla as uf, " +
                       "       ufnome as estado " +
                       "from cadastros.tbestados " +
                       "order by ufnome ";
            }


    Está funcionando tudo direitinho, trazendo a lista dos estados, porém quero alterar algumas propriedades das colunas, para isto criei uma classe conforme segue:

    namespace wfaPraticandoHeranca
    {
        class EntidadeGridColumns
        {
            private string sFieldName = null;
            private string sHeaderText = null;
            private int iMinimumWidth = 0;
            private string sToolTipText = null;
            private int iWidth = 0;
            private bool bFroze = false;

            public string FieldName
            {
                get { return sFieldName; }
                set { sFieldName = value; }
            }

            public string HeaderText
            {
                get { return sHeaderText; }
                set { sHeaderText = value; }
            }

            public int MinimumWidth
            {
                get { return iMinimumWidth; }
                set { iMinimumWidth = value; }
            }

            public string ToolTipText
            {
                get { return sToolTipText; }
                set { sToolTipText = value; }
            }

            public int Width
            {
                get { return iWidth; }
                set { iWidth = value; }
            }

            public bool Frozen
            {
                get { return bFroze; }
                set { bFroze = value; }
            }
        }
    }



    No FormBaseConsulta criei uma classe conforme segue:

            public virtual EntidadeGridColumns getGridColumnsProperties()
            {
                EntidadeGridColumns colProperties = new EntidadeGridColumns[0];

                return colProperties;
            }

     -> Esta classe está me reportando o erro (com "getGridColumnsProperties()" sublinhado em azul):

    Error 3 Inconsistent accessibility: return type 'wfaPraticandoHeranca.EntidadeGridColumns' is less accessible than method 'wfaPraticandoHeranca.frmModeloConsultas.getGridColumnsProperties()'



    No FormConEstados eu sobrescrevi a classe:

            public override EntidadeGridColumns setColumnsProperties()
            {
                EntidadeGridColumns colProperties = new EntidadeGridColumns[3];

                colProperties[0] = new EntidadeGridColumns();
                colProperties[0].FieldName = "codigo";
                colProperties[0].HeaderText = "Código";
                colProperties[0].MinimumWidth = 75;
                colProperties[0].Width = 75;
                colProperties[0].ToolTipText = "Código do cadastro do Estado...";
                colProperties[0].Frozen = true;

                colProperties[1] = new EntidadeGridColumns();
                colProperties[1].FieldName = "sigla";
                colProperties[1].HeaderText = "Sigla";
                colProperties[1].MinimumWidth = 60;
                colProperties[1].Width = 60;
                colProperties[1].ToolTipText = "UF do Estado...";
                colProperties[1].Frozen = false;

                colProperties[2] = new EntidadeGridColumns();
                colProperties[2].FieldName = "estado";
                colProperties[2].HeaderText = "Estado";
                colProperties[2].MinimumWidth = 250;
                colProperties[2].Width = 25;
                colProperties[2].ToolTipText = "Nme do Estado...";
                colProperties[2].Frozen = false;

                return colProperties;

            }

     -> Esta classe está me reportando o erro (com "getGridColumnsProperties()" sublinhado em azul):

    Error 2 Inconsistent accessibility: return type 'wfaPraticandoHeranca.EntidadeGridColumns' is less accessible than method 'wfaPraticandoHeranca.frmConEstados.setColumnsProperties()'

    Em fim, estes são os erros que estou tendo, se puderem me ajudar serei grato, pois não tenho idéia de como resolver isto!

    Ao meu ver a classe "EntidadeGridColumns" não pode ser utilizada como retorno do método e não sei tenho idéia de como fazer em C#.

    Nota:
      - Outro erro que está acontecendo, visto que estes sção os erro 2 e 3, o design do FormConEstados não abre mais reportando o erro: Connection string argument missing! Parameter name: Host
        Mas executando tudo funciona devidamente; já excluí as pastas BIN e OBJ conforme as dicas dos foruns e nada. Já verifiquei no "Npgsql" este parâmetro "Host" e não encontre nada, apenas "Server".




    • Editado Arnaldo José terça-feira, 4 de agosto de 2015 18:26 Corrigir retorno dos métodos
    terça-feira, 4 de agosto de 2015 17:44

Respostas

  • Não sei se resolve todos os seus problemas, mas vamos lá:

    - O retorno dos métodos getGridColumnsProperties é um array de EntidadeGridColumns;

    - Na classe FormComEstados você deve fazer o override do método getGridColumnsProperties, e não setColumnsProperties;

    - A classe EntidadeGridColumns deve ser pública.

    Checa se dá certo com essas mudanças

    • Marcado como Resposta Marcos SJ quinta-feira, 6 de agosto de 2015 20:32
    terça-feira, 4 de agosto de 2015 21:05

Todas as Respostas

  • Não sei se resolve todos os seus problemas, mas vamos lá:

    - O retorno dos métodos getGridColumnsProperties é um array de EntidadeGridColumns;

    - Na classe FormComEstados você deve fazer o override do método getGridColumnsProperties, e não setColumnsProperties;

    - A classe EntidadeGridColumns deve ser pública.

    Checa se dá certo com essas mudanças

    • Marcado como Resposta Marcos SJ quinta-feira, 6 de agosto de 2015 20:32
    terça-feira, 4 de agosto de 2015 21:05
  • Boa tarde,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 6 de agosto de 2015 20:32