2013-10-05 68 views
0

我想将未知对象传递给方法,然后让它将对象作为List返回。基本上,我想要类似这样的东西如何将IList通用对象转换为列表<object>

object b = new MyType(); 
object a = new List<MyType>() 

public List<object> convertObjectBackToList(object Input) 
{ 
    //if Input is an IList type (Ex: object a above) 
    //return List<object>; 

    //if Input is an generic object type. (Ex: object b above) 
    //return an List<object> which has only one object. 
    List<object> Output = new List<object>(); 
    Output.Add(Input); 
    return Output; 
} 

回答

6

您可以先将您的对象转换为IEnumerable,然后转换为列表。

public List<object> convertObjectBackToList(object Input) 
{ 
    if(Input is IEnumerable) 
     return ((IEnumerable)Input).Cast<Object>().ToList(); 
    return new List<Object>() { Input }; 
} 

编辑

一个通用的扩展方法甚至会更好

public static partial class SOExtensions 
{ 
    public static List<T> ToList2<T>(this object Input) 
    { 
     if (Input is IEnumerable) 
      return ((IEnumerable)Input).Cast<T>().ToList(); 
     return new List<T>() { (T)Input }; 
    } 
} 

然后,你可以使用它作为

var list1 = someObject.ToList2<SomeType>(); 
+0

谢谢,你是高手。 –

相关问题