我有以下课程:
class A
{
public IEnumerable Song { get; set; }
}
然后在索引中我有这样的代码:
public ActionResult
{
a.Song = (Path.Combine(Server.MapPath("~/Content/themes/base/songs"),
file)).ToList();
return View();
}
此代码无法正常工作如何为IEnumerable Song添加字符串路径?或者有更好的方法或其他方式来做这个而不是使用IEnumerable?
- 我不明白-ve评分?这是一个合法的问题? 正如我上面所描述的那样,我试图在a.Song下收集4或5个url作为字符串。 上面的代码返回字符,如134 char字符串数组。这不是我想要得到的。我希望这个解释有所帮助,但我仍然不理解 - 评级。那些赞成评级的人可以解释他们为什么这样做吗?
答案 0 :(得分:1)
IEnumerable是StateMachine的序列生成器。您无法通过这种方式为IEnumerable添加项目。但由于大多数集合都是从它派生的,因此您可以为其分配集合。
var list = new List<string>();
list.Add(Path.Combine(Server.MapPath("~/Content/themes/base/songs"),
file));
a.Song = list;
这会奏效。
此处创建一个List并添加路径。
答案 1 :(得分:0)
我想你想:
class A
{
List<string> songs=new List<string>();
public IEnumerable<string> Songs { get{ return songs;}}
public void Add(string song)
{
songs.Add(song);
}
}
然后你使用:
var a = new A();
a.Add(...);
这允许您公开一个只读集合,并以明确的方式添加歌曲。