8 messaggi dal 16 marzo 2013
Buongiorno a tutti nella compilazione del mio progetto ricevo il seguente messaggio di errore:

Impossibile convertire implicitamente il tipo 'System.Collections.Generic.List<Personale> [c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll]' in 'System.Collections.Generic.List<Personale> [c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll]'


questo è il codice della pagina

<%@ WebHandler Language="C#" Class="MissioniS" %>

using System;
using System.Web;
using System.Data;
using System.Collections.Generic;
using System.Linq;

public class MissioniS : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string stringa = context.Request.QueryString["q"];
        int idCalamita = Convert.ToInt32(context.Request.QueryString["id"]);

        Dipendenti dip = new Dipendenti();
        List<DataRow> missDt = dip.missS(idCalamita, true);

        List<Personale> persLst = dip.ElencoDipendenti();

        var query = (from pers in persLst
                     join miss in missDt
                     on pers.CodFis equals miss.Field<string>("CODFISDIP")
                     orderby miss.Field<DateTime>("DataOraInizio")
                     select new
                     {
                         progMiss = miss.Field<decimal>("GMIS"),
                         descrizione = string.Concat(miss.Field<decimal>("GMIS").ToString(), " ", pers.Cognome, " ", pers.Nome, " ", pers.CodFis, " Dal ", miss.Field<DateTime>("DataOraInizio").ToString("dd/MM/yyyy"), " Al ", miss.Field<DateTime>("DataOraFine").ToString("dd/MM/yyyy"), " ", miss.Field<string>("LDEST"))
                     }).Where(f => f.descrizione.Contains(stringa.ToUpper()));

        foreach (var r in query)
        {
            context.Response.Write(string.Concat(r.descrizione, "|", r.progMiss, Environment.NewLine));
        }

    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}


L'errore è riferito a questa parte di codice

List<Personale> persLst = dip.ElencoDipendenti();


E' strano perchè il tipo è uguale da entrambi i lati e nell'edito non appare alcuna sottolineatura rossa.

Grazie

Bruno
Ciao,

puoi postare la classe dipendente?
Ti consiglio anche di fare un Clean ed effettuare nuovamente il build.
Inoltre la classe si dovrebbe chiamare Dipendente e non Dipendenti ed ElencoDipendenti, visto che è un metodo, dovrebbe contenere un verbo (es. GetElencoDipendenti()).

Ormai programmano tutti... ma la professionalità appartiene a pochi
8 messaggi dal 16 marzo 2013
Grazie per la risposta è i consigli. Ora sono fuori ufficio appena rientro posto la classe dipendente. Mi puoi indicare la procedura per fare il clean?
Modificato da brigoni il 07 marzo 2017 10.47 -
8 messaggi dal 16 marzo 2013
ecco la classe dipendente

public class Dipendenti
{
 
    public List<Personale> ElencoDipendenti()
    {
        string sql = "SELECT Pers.CF, Pers.Qualifica, Pers.Cognome, Pers.Nome FROM personale Pers ORDER BY Pers.Cognome, Pers.Nome";

        DataTable dt = new DbCalamita().Table(sql);

        List<Personale> p = new List<Personale>();

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            DataRow dr = dt.Rows[i];
            Personale p0 = new Personale(dr["CF"].ToString());

            p0.Qualifica = dr["Qualifica"].ToString();
            p0.Cognome = dr["Cognome"].ToString();
            p0.Nome = dr["Nome"].ToString();

            p.Add(p0);
        }

        return p;

    }
public List<Personale> ElencoDipendenti(string sql, bool ancheCessati)
    {
        //altro codice
    }

    public List<Personale> ElencoDipendenti(string sql, Dictionary<string, object> parametri, bool ancheCessati)
    {
        //altro codice
    }


e questa è la classe Personale

public class Personale
{
    public Personale(string codFis)
    {
        this.CodFis = codFis;
    }
    public Personale(List<DataRow> cambiTurno, List<DataRow> missSipec)
    {
        //altro costruttore
    }
    public string CodFis { get; set; }
    public string Qualifica
    {
        get
        {
            if (this._Qualifica == null) SetAnagrafica();
            return this._Qualifica;
        }
        set
        {
            this._Qualifica = value;
        }
    }
    private string _Qualifica { get; set; }
    public string Cognome
    {
        get
        {
            if (this._Cognome == null) SetAnagrafica();
            return this._Cognome;
        }
        set
        {
            this._Cognome = value;
        }
    }
    private string _Cognome { get; set; }
    public string Nome
    {
        get
        {
            if (this._Nome == null) SetAnagrafica();
            return this._Nome;
        }
        set
        {
            this._Nome = value;
        }
    }
    private string _Nome { get; set; }
    }

Hai un problema di ambiguità della classe. Probabilmente se facessi uso di namespace lo vedresti subito.
Puoi aggiungere i namespace alle classi o provare la soluzione indicata nel primo post qui:
http://stackoverflow.com/questions/32514767/cannot-implicitly-convert-type-system-collections-generic-list

Ormai programmano tutti... ma la professionalità appartiene a pochi
8 messaggi dal 16 marzo 2013
Grazie per la dritta. In effetti c'era un'altra classe, definita all'interno di un altro handler, con lo stesso nome.

Grazie

Bruno
Modificato da brigoni il 09 marzo 2017 06.10 -
Per fare il clean, in visual studio, tasto destro sul progetto e Clean, oppure elimina manualmente le cartelle bin e obj.

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.