Erro: System.MissingMethodException: No parameterless constructor defined for this object.

26/03/2010

  Estou tentando desenvolver uma classe para utilizá-la junto com o objectdatasource, porém ocorreu o erro do título acima, estou enviando o código que estou mexendo. Alguém sabe por que ocorre o erro aqui e como soluciono?
using System;

using System.Data;

using System.Configuration;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Data.SqlClient;

using System.Web.Configuration;

using System.Collections.Generic;



/// 

/// Summary description for Entidades

/// 



namespace erasw.Entidades

{



    public class CustomEntidade

    {



        protected readonly string _connectionString;

        private int _codigo;

        private string _nome;

        private string _cpf;

        private string _cnpj;

        private string _rg;

        private string _nrInscricaoEstadual;

        private string _endereco;

        private string _numeroEndereco;

        private string _bairro;

        private string _cidade;

        private string _uf;

        private string _complemento;

        private string _cep;

        private DateTime _dataCadastro;

        private string _status;

        private string _email;

        private string _userId;

        private string _userName;

        private string _tipoPessoa;



        public int Codigo

        {

            get {return _codigo;   }

            set { _codigo = value; }

        }



        public string Nome

        {

            get { return _nome; }

            set { _nome = value;}

        }



        public string TipoPessoa

        {

            get { return _tipoPessoa;  }

            set { _tipoPessoa = value; }

        }



        public string Cpf

        {

            get { return _cpf;  }

            set { _cpf = value; }

        }



        public string Cnpj

        {

            get { return _cnpj; }

            set { _cnpj = value;}

        }



        public string NrInscricaoEstadual

        {

            get { return _nrInscricaoEstadual; }

            set { _nrInscricaoEstadual = value;}

        }



        public string Endereco

        {

            get { return _endereco;  }

            set { _endereco = value; }

        }



        public string NumeroEndereco

        {

            get { return _numeroEndereco;  }

            set { _numeroEndereco = value; }

        }



        public string Bairro

        {

            get { return _bairro;  }

            set { value = _bairro; }

        }



        public string Cidade

        {

            get { return _cidade;  }

            set { _cidade = value; }

        }



        public string Uf

        {

            get { return _uf;  }

            set { _uf = value; }

        }



        public string Complemento

        {

            get { return _complemento; }

            set { _complemento = value;}

        }



        public DateTime DataCadastro

        {

            get { return _dataCadastro;  }

            set { _dataCadastro = value; }

        }



        public string Rg

        {

            get { return _rg;  }

            set { _rg = value; }

        }



        public string Cep

        {

            get { return _cep;  }

            set { _cep = value; }

        }



        public string Status

        {

            get { return _status; }

            set { _status = value;}

        }



        public string UserId

        {

            get { return _userId;  }

            set { _userId = value; }

        }



        public string UserName

        {

            get { return _userName;  }

            set { _userName = value; }

        }



        public string Email

        {

            get { return _email;  }

            set { _email = value; }

        }



        //static CustomEntidade() 

        //{

        //    //setando a String de conexão

        //}



        //Código Equivalente ao constructor do Delphi



        public CustomEntidade(SqlDataReader reader)

        {

            _connectionString = WebConfigurationManager.ConnectionStrings["SCSConnectionString"].ConnectionString;

            if (reader["cd_entidade"] != null)

                _codigo = (int) reader["cd_entidade"];

            if (reader["nm_entidade"] != null)

                _nome = (string) reader["nm_entidade"];

            if (reader["fg_tipopessoa"] != null)

                _tipoPessoa = (string) reader["fg_tipopessoa"];

            if (reader["nr_cpf"] != null)

                _cpf = (string) reader["nr_cpf"];

            if (reader["nr_rg"] != null)

                _rg = (string) reader["nr_rg"];

            if (reader["nr_cnpj"] != null)

                _cnpj = (string) reader["nr_cnpj"];

            if (reader["nr_inscricao"] != null)

                _nrInscricaoEstadual = (string) reader["nr_inscricao"];

            if (reader["ds_endereco"] != null)

                _endereco = (string) reader["ds_endereco"];

            if (reader["nr_endereco"] != null)

                _numeroEndereco = (string) reader["nr_endereco"];

            if (reader["ds_bairro"] != null)

                _bairro = (string) reader["ds_bairro"];

            if (reader["ds_cidade"] != null)

                _cidade = (string) reader["ds_cidade"];

            if (reader["ds_uf"] != null)

                _uf = (string) reader["ds_uf"];

            if (reader["ds_complemento"] != null)

                _complemento = (string) reader["ds_complemento"];

            if (reader["dt_cadastro"] != null)

                _dataCadastro = (DateTime) reader["dt_cadastro"];

            if (reader["nr_cep"] != null)

                _cep = (string) reader["nr_cep"];

            if (reader["ds_email"] != null)

                _email = (string) reader["ds_email"];

            if (reader["fg_status"] != null)

                _status = (string) reader["fg_status"];

            if (reader["ds_userId"] != null)

                _userId = (string) reader["ds_userId"];

            if (reader["ds_username"] != null)

                _userName = (string) reader["ds_username"];

        }



        //public abstract List SelectAll() { }

        //public abstract CustomEntidade SelecByCodigo(int Codigo) { }

        //public abstract void Insert(int codigo, string nome, string tipoPessoa, string cpf, string cnpj,

        //                           string rg, string nrInscricaoEstadual, string endereco, string numeroEndereco,

        //                           string bairro, string cidade, string uf, string complemento, string cep,

        //                           DateTime dataCadastro, string status, string email, string userId, 

        //                           string userName) { }

        //public abstract void Update(int codigo, string nome, string tipoPessoa, string cpf, string cnpj,

        //                           string rg, string nrInscricaoEstadual, string endereco, string numeroEndereco,

        //                           string bairro, string cidade, string uf, string complemento, string cep,

        //                           DateTime dataCadastro, string status, string email, string userId,

        //                           string userName) { }

        //public abstract void Delete(int Codigo) { }

    }

    public class Cliente : CustomEntidade //herdando da classe padrão CustomEntidade

    {

        public Cliente(SqlDataReader reader): base(reader) { } //Constructor da nova classe



        /// 

        /// Método SelectAll 

        /// 

        /// Retorna uma lista de entidades

        [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]

        public List SelectAll()

        {

            //Passando SQL

            string sSQL = "SELECT cd_entidade,   " +

                          "       nm_entidade,   " +

                          "       nr_cpf,        " +

                          "       nr_rg,         " +

                          "       nr_cnpj,       " +

                          "       nr_inscricao,  " +

                          "       ds_endereco,   " +

                          "       nr_endereco,   " +

                          "       fg_tipopessoa, " +

                          "       ds_bairro,     " +

                          "       ds_cidade,     " +

                          "       ds_uf,         " +

                          "       ds_complemento," +

                          "       dt_cadastro,   " +

                          "       nr_cep,        " +

                          "       ds_email,      " +

                          "       fg_status,     " +

                          "       ds_userId,     " +

                          "       ds_username    " +

                          "  FROM Entidades      " +

                          " WHERE fg_cliente = @fg";

            

            //Criando a conexão e os parâmetros

            SqlConnection con = new SqlConnection(_connectionString);

            SqlCommand cmd = new SqlCommand(sSQL, con);

            //Setando o tipo do comando

            cmd.CommandType = CommandType.Text;

            //criando a lista de generics

            List results =new List();

            //Setando o parâmetro

            cmd.Parameters.Add ("@fg", 0);

            //Abrindo a conexão e lendo os registros

            using (con)

            {

                con.Open();

                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())

                {

                    results.Add(new Cliente(reader));

                }

                con.Close();

                return results;



            }

        } 

    }

} 



Obrigado.

Eduardo Aguiar

Respostas

28/03/2010

Eduardo Aguiar

  Olá pessoal, quem talvez puder me ajudar neste erro, o problema parece ocorrer devido ao constructor da minha classe pelo que andei pesquisando sobre a mensagem do erro, não entendi bem o porque que ocorre nem como resolver, se alguem puder ajudar ficarei muito agradecido.
Responder Citar

29/03/2010

Felipe Cobello

Olá Eduardo, Pelo que entendi o construtor da sua classe recebe um objeto SQLDataReader, esse objeto está sendo passado na hora da instancia da classe?   Abraços   Felipe
Responder Citar

29/03/2010

Eduardo Aguiar

  Oi Felipe, valeu pelo apoio, imagino que possa ser isto, simplesmente setei o ObjectDataSource para utilizar a minha classe, achei que simplesmente configurando desta forma o ObjectDataSource se encarregaria de passar esse parâmetro, mas pelo visto não é assim. De que forma eu poderia fazer isso?
  Abaixo vai o arquivo .aspx onde faço isso.
  Muito obrigado, Eduardo Aguiar.














    Untitled Page





    

    

    

        

        

        

            

                

                

                

                

                

                

                

                

                

                

                

                

                

                

                

                

                

                

                

            

        

    

    

    







Responder Citar

29/03/2010

Eduardo Aguiar

  Olá, pessoal, finalmente descobri. Sou um novato em C#. Por isso, tenho algumas dificuldades.
  O problema ocorria por faltar na declaração do método SelectAll que seria static.
  Anteriormente ocorria fazia da seguinte forma:
  public List SelectAll()
  Onde deveria ficar da seguinte maneira:
  public static List SelectAll()

  Podem me corrigir se eu estiver errado, mas pelo que eu entendi, colocando static, o ObjectDataSource não dependerá de criar a minha classe para depois acessar o método SelectAll. Anteriormente ele tentava criar sem passar o parâmetro por isso ocorreu o erro deste tópico.

  Obrigado a todos!
              Eduardo Aguiar
Responder Citar