-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 を使用するよりも、これを行うためのより良い方法または他の方法はありますか?

-- レーティングがわかりませんか? それは合法的な質問ですか?上で説明したように、a.Song の下の文字列として 4 つまたは 5 つの URL を収集しようとしています。上記のコードは、134 文字の文字列配列のような文字を返します。これは私が取得しようとしているものではありません。この説明がお役に立てば幸いですが、まだ評価がわかりません。-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;

これは機能します。

ここでリストが作成され、パスが追加されます。

于 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 に答える