How to check if a variable is an IEnumerable of some sort

后端 未结 9 776
一生所求
一生所求 2021-02-01 12:47

basically I\'m building a very generic T4 template and one of the things I need it to do is say print variable.ToString(). However, I want it to evaluate lists and

相关标签:
9条回答
  • 2021-02-01 13:32

    Well, somewhat simple but... if you only have:

    using System.Collections.Generic;
    

    you might need to add:

    using System.Collections;
    

    The former defines IEnumerable<T> and latter defines IEnumerable.

    0 讨论(0)
  • 2021-02-01 13:35

    This is an old question, but I wanted to show an alternative method for determining if a SomeType is IEnumerable:

    var isEnumerable = (typeof(SomeType).Name == "IEnumerable`1");
    
    0 讨论(0)
  • 2021-02-01 13:37

    If you want to test for the non-generic IEnumerable then you'll need to include a using System.Collections directive at the top of your source file.

    If you want to test for an IEnumerable<T> of some kind then you'll need something like this instead:

    if (variable != null)
    {
        if (variable.GetType().GetInterfaces().Any(
                i => i.IsGenericType &&
                i.GetGenericTypeDefinition() == typeof(IEnumerable<>)))
        {
            // foreach...
        }
    }
    
    0 讨论(0)
提交回复
热议问题