C# object to array

前端 未结 5 1533
失恋的感觉
失恋的感觉 2020-12-15 04:40

Using reflection I have an object which I need to cast into an iterable list of items (type unknown, will be object). Using the Watch window I can see my object is an array

相关标签:
5条回答
  • 2020-12-15 04:48

    Simply Try This

     string[] arr = ((IEnumerable)yourOjbect).Cast<object>()
                                 .Select(x => x.ToString())
                                 .ToArray();
    
    0 讨论(0)
  • 2020-12-15 04:51

    You should be able to cast it to IEnumerable if it is a collection of any sorts (array, list, etc.). Also PropertyInfo contains a PropertyType property which you could use to find out the actual type if you wanted to.

    0 讨论(0)
  • 2020-12-15 04:56

    Try to cast to IEnumerable. This is the most basic interface all enumerables, arrays, lists etc. implement.

    IEnumerable myList = anArray as IEnumerable;
    if (myList != null)
    {
        foreach (object element in myList)
        {
            // ... do something
        }
    }
    else
    {
        // it's not an array, list, ...
    }
    
    0 讨论(0)
  • 2020-12-15 04:56

    Try this:

        var myList = anArray as IEnumerable;
        if (mylist != null)
        { 
            foreach (var element in myList)
            {
                // etc
            }
        }
    

    You might also need to specify the generic type of the IEnumerable, depending on your situation.

    0 讨论(0)
  • 2020-12-15 05:02

    Casting it to an ArrayList is only going to work if the object actually is an ArrayList. It wont work with a System.Array, or a System.Collections.Generic.List`1 for example.

    I think what you actually should do is cast it to IEnumerable, since that is your only requirement to loop over it...

    object anArray = propInfo.GetValue(instance, null);
    IEnumerable enumerable = anArray as IEnumerable;
    if (enumerable != null)
    {
        foreach(object element in enumerable)
        {
            // etc...
        }
    }
    
    0 讨论(0)
提交回复
热议问题