2010-07-22 47 views
1

我試圖將泛型值轉換爲泛型值數組,以便我可以用逗號分隔它們。但是,我不能從我的泛型類型轉換爲泛型類型的數組。希望有些代碼將有助於使事情更清晰...以逗號分隔的泛型類型

public T Item 
    { 
     get { return item; } 
     set { item = value; } 
    } 

    public string GetItemAsString() 
    { 
     string itemString = Item.ToString(); 

     if(Item.GetType().IsArray) 
     { 
      itemString = string.Join(",", Item); 
     } 

     return itemString; 
    } 

有人能指出我在正確的方向嗎?

謝謝。

回答

1

也許是這樣的?

public class Tester<T, R> where T : IEnumerable<R> 
{ 
    private T _item; 
    public T Item 
    { 
     get { return _item; } 
     set { _item = value; } 
    } 

    public string GetItemAsString() 
    { 
     IEnumerable<R> items = _item as IEnumerable<R>; 
     if (items != null) 
     { 
      StringBuilder str = new StringBuilder(); 
      int count = 0; 
      foreach (R item in items) 
      { 
       str.Append(count++ > 0 ? "," : String.Empty); 
       str.Append(item.ToString()); 
      } 

      return str.ToString(); 

     } 
     return null; 
    } 
} 
+0

我希望我能避開'R',但我認爲這是唯一的方法。 – paulio 2010-07-23 08:20:49

0

我不完全確定這是你想做什麼,但你可以嘗試這樣的事情。

public T Item 
{ 
    get { return item; } 
    set { item = value; } 
} 

public string GetItemAsString() 
{ 
    string itemString = Item.ToString(); 

    if(Item.GetType().IsArray) 
    { 
     itemString = String.Join(",", (Item as IEnumerable<object>).Select(item => item.ToString()).ToArray()); 
    } 

    return itemString; 
} 
+1

在.NET 4中,您不需要'ToArray',因爲'String.Join'可以直接處理'IEnumerable '。 – 2010-07-22 16:20:51