Array
(
)

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

Eduardo Aguiar
   - 26 mar 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?
#Código

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
   - 28 mar 2010

  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.

Felipe Cobello
   - 29 mar 2010

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

Eduardo Aguiar
   - 29 mar 2010

  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.

#Código







    Untitled Page


    
    
    
        
        
        
            
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
                
            
        
    
    
    



Eduardo Aguiar
   - 29 mar 2010

  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