2017-05-01 8 views
0

Ich habe dieses Modell in C#:Wie kann ich lösen Kann Typ System.Collections.Generic.List nicht implizit konvertieren?

public class interfaceModel 
{ 
    public string interfacename { get; set; } 
    public long id { get; set; } 
} 

und diesen Code schreiben:

public static List<interfaceModel> CompanyInterfaceFetch() 
{ 
    var database = new DataBaseDataContext(); 
    var companyinterface = new CompanyInterface(); 

    var interfacelist = 
       database.CompanyInterfaces.Select(x => new interfaceModel { interfacename = x.InterfaceName, id=x.id}); 
    return interfacelist.ToList(); 
} 

// database model 
public class interfaceModel 
{ 
    public string interfacename { get; set; } 
    public long id { get; set; } 
} 

Jetzt schreibe ich Code, der Methode aufzurufen:

public static List<interfaceModel> interfacefetch() 
{ 
    return Database.CompanyInterfaceFetch(); 
} 

aber auf dieser Linie:

return Database.CompanyInterfaceFetch(); 

Ich erhalte diesen Fehler:

Error CS0029: Cannot implicitly convert type 'System.Collections.Generic.List' to 'System.Collections.Generic.List

Wie kann ich dieses Problem lösen? Vielen Dank.

+0

hast du zwei 'interfaceModel'? –

+0

@ DanielA.White nein habe nur eine SchnittstelleModell –

+1

der Compiler sagt, Sie haben 2 –

Antwort

3

Sie haben zwei separate Klassen mit demselben Namen. Die Beurteilung der Namensgebung ist dies die Lage der beiden:

  • Controller> Datenbank> interfaceModel
  • Modelle> interfaceModel

Die beiden Typen, obwohl sie den gleichen Namen haben und auch haben könnte, die genaue gleiche Felder sind nicht austauschbar. Entfernen Sie eines von beiden und kompilieren Sie es erneut, um die Fehler zu überprüfen, um zu sehen, welche Anpassungen Sie vornehmen müssen.

+0

Bitte warten Sie, um zu überprüfen, dass –

+0

danke mein Freund, mein Problem zu lösen –

0

Ihr Fehler ist klar:

Error CS0029 Cannot implicitly convert

type 'System.Collections.Generic.List<Web.Controllers.Database.interfaceModel>'

to 'System.Collections.Generic.List<Web.Models.interfaceModel>'

Sie haben zwei Arten mit dem gleichen Namen in diesen beiden Standorten.

Wenn sie die gleichen Felder haben, dann sollten Sie eine von ihnen entfernen. Wenn sie unterschiedlich sind, müssen Sie die Importe in Ihrem Code korrigieren, so dass sich CompanyInterfaceFetch() und interfacefetch() auf denselben Typ beziehen. Löschen Sie ggf. die Importe und geben Sie den vollständig qualifizierten Klassennamen an (wie in der Ausnahmebedingungsnachricht).

-1

Da Sie zwei Typen in verschiedenen Namespaces verteilt haben, können Sie nicht von einem Typ in einen anderen konvertieren.

Für mich sieht es gut aus, aus Design-Perspektive!

Eine der Möglichkeiten, dieses Problem zu lösen, wäre Automapper!

Verwandte Themen