-3

我有以下课程:

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 字符字符串数组。这不是我想要得到的。我希望这个解释有所帮助,但我仍然不明白 -ve 评级。评估 -ve 评级的人可以解释他们为什么这样做吗?

4

2 回答 2

1

IEnumerable 是来自 StateMachine 的序列生成器。您不能通过这种方式为 IEnumerable 添加项目。但是由于大多数集合都是从它派生的,因此您可以为它分配一个集合。

var list = new List<string>();
list.Add(Path.Combine(Server.MapPath("~/Content/themes/base/songs"),
                           file));
a.Song = list;

这将起作用。

这里创建了一个 List 并将路径添加到其中。

于 2012-10-11T05:47:19.050 回答
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(...);

这允许您公开只读集合,并以明确的方式添加歌曲。

于 2012-10-11T05:48:10.207 回答