2015-11-25 36 views
1

所以我用ASP.net,并试图模型/字符串添加到列表List.Add导致错误

public class Playlist 
{ 

    public Playlist() 
    { 
     this.placeList = new List<places>(); 
    } 
    [Key] 
    public int id { get; set; } 
    public string name { get; set; } 
    [ForeignKey("UserId")] 
    public IdentityUser User { get; set; } 
    public string UserId { get; set; } 
    public List<places> placeList { get; set; } 


    public class places 
    { 
     [Key] 
     public int places_id { get; set; } 
     public string id { get; set; } 
    } 
} 

我让我的ID为地方作为一个字符串,因为我想要的。我期望

Playlist playlist = new Playlist(); 
playlist.placeList.Add("hi") 

会导致添加到id字段的条目,但相反,我得到一个错误说。 System.Collection.Generic.List的最佳重载方法匹配具有无效参数。所以我尝试创建另一个模型。

public class PlaceModel2 
{ 
    public string id { get; set; } 
} 

并添加

PlaceModel2 f = new PlaceModel2(); 
f.id = ("hi"); 

playlist.placeList.Add(f); 

我认为这将工作过,但这只是给了我同样的错误。任何线索?

+0

你能不能给我们的完整版本关闭错误? – razor118

+0

所以这是我得到的错误 playlist.placeList.Add(f)\t最好的重载方法匹配的'System.Collections.Generic.List .Add(Travelfy.API .Entities.Playlist.places)'有一些无效的参数 –

回答

1

这里:

Playlist playlist = new Playlist(); 
playlist.placeList.Add("hi") 

您试图string对象添加到placesList对象

这里:

PlaceModel2 f = new PlaceModel2(); 
f.id = ("hi"); 

playlist.placeList.Add(f); 

您尝试添加​​列出的places

您是不匹配类型,您需要创建places对象并将其添加到列表中。所以对象的匹配类型:

var f = new Playlist.places(); 
f.id = "hi"; 

playlist.placeList.Add(f); 

如果要添加不同类的对象你需要建立一个从places类继承的类placeList。然后,您将能够将派生类对象添加到基类对象列表中。

+0

所以不是我的地方()播放列表的模型?你不是说我不能把它当成一个班级吗?这就是为什么我创建playlistModel2来模仿场所模型? –

+0

@JuliusDoan'places'是一个嵌套的'Playlist'类,但它是一个类**,所以你需要对待它。如果你想添加除'places'之外的其他对象,你需要创建派生类 – wudzik

+0

所以我明白为什么它不工作,但我不明白我需要做什么来解决它。所以我需要创建一个名为Places的新类,它具有相同的对象int places_id和字符串id(以为这是PlaceModel2)?我不能仅仅调用列表 f =新列表,因为它是一个嵌套类。哦,谢谢你的快速回复 –

0

在第一种情况下

Playlist playlist = new Playlist(); 
playlist.placeList.Add("hi") 

要添加stringList<places>代替places对象

在第二种情况下

PlaceModel2 f = new PlaceModel2(); 
f.id = ("hi"); 

playlist.placeList.Add(f); 

要添加​​到List<places>代替places对象。

改正它,你的问题将得到解决

0

你的集合有T作为类的地方。得到它的工作,你必须添加成才这样的:

var place = new places(){ /*initialize properties*/ }; 
Playlist playlist = new Playlist(); 
playlist.placeList.Add(place); 

您的收藏列表是不列出为什么它不工作,多数民众赞成。

+0

因为地方是一个嵌套的类,我不能只是调用新的地方(){} ...? –

+0

您的placeList是在构造函数中创建的,因此您可以添加元素。你的收藏是列表,所以你必须添加到这个集合从地方类创建的对象。 – razor118

0

List<Places>可容纳只有地方名单类。

您正在尝试向位置列表添加字符串。

所以,你需要做这样的事情:

Places places = new Places(); 
places.id="hi"; 
Playlist playlist = new Playlist(); 
playlist.placeList.Add(places) ;