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

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에서 'String.Join'은'IEnumerable '을 직접 처리 할 수 ​​있으므로'ToArray '는 필요하지 않습니다. –

관련 문제