Тест универсального типа коллекции

Я хочу выполнить некоторые операции в соответствии с заданным типом коллекции (используя рефлексию )независимо от универсального типа.

Вот мой код:

    void MyFct(Type a_type)
    {
        // Check if it's type of List<>
        if (a_type.Name == "List`1")
        {
            // Do stuff
        }
        // Check if it's type of Dictionary<,>
        else if (a_type.Name == "Dictionary`2")
        {
            // Do stuff
        }
    }

Пока он работает, но мне становится очевидно, что это не самое безопасное решение.

    void MyFct(Type a_type)
    {
        // Check if it's type of List<>
        if (a_type == typeof(List<>))
        {
            // Do stuff
        }
        // Check if it's type of Dictionary<,>
        else if (a_type == typeof(Dictionary<,>))
        {
            // Do stuff
        }
    }

Я тоже так пробовал, компилируется, но не работает... Я также попытался протестировать все интерфейсы данного типа коллекции, но это подразумевает эксклюзивность для интерфейсов в коллекциях...

Надеюсь, я ясно выразился, моя неподготовленность к английскому языку:)

5
задан s0ubap 27 April 2012 в 18:02
поделиться