2017-05-01 13 views
0

私はC#で、このモデルを持っている:どうすれば解決できますか?System.Collections.Generic.List型を暗黙的に変換できませんか?

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

と、このコードを書く:

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; } 
} 

今、私は、そのメソッドを呼び出すコードを記述します。

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

が、この行に:

return Database.CompanyInterfaceFetch(); 

私はこのエラーを受け取ります:

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

どうすればこの問題を解決できますか?ありがとう。

+0

次の2つの 'interfaceModel'を持っているのですか? DanielA.White @ –

+0

にはちょうど1 interfaceModel –

+1

コンパイラはあなたが –

答えて

3

同じ名前の2つのクラスがあります。ネーミングを判断すると、これは、両方の場所である:

  • コントローラ>データベース> interfaceModel
  • のモデル> interfaceModel

2種類、それらが同じ名前を持つとしても、正確なを持っているかもしれませんが同じフィールドは交換できません。どちらかを削除してもう一度コンパイルし、エラーをチェックして調整を確認してください。

+0

お待ちくださいしていると言っているがありません –

+0

おかげで私の友人は、私の問題を解決することを確認するために2 –

0

あなたのエラーは明確である:

Error CS0029 Cannot implicitly convert

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

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

あなたはこれらの2つの場所で同じ名前の2つのタイプがあります。

フィールドに同じフィールドがある場合は、それらのフィールドの1つを削除する必要があります。それらが異なる場合、CompanyInterfaceFetch()interfacefetch()が同じタイプを参照するように、コード内のインポートを修正する必要があります。必要に応じて、インポートをドロップし、(例外メッセージのような)完全修飾クラス名を指定します。

-1

異なる名前空間に2つのタイプが広がっているため、あるタイプから別のタイプに変換することはできません。

私にとっては、それはデザインの観点からは大丈夫だと思います!

この問題を解決する方法の1つは、Automapperを採用することであろう!

関連する問題