2010-07-22 72 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