public T getValueByName<T>(String name)
{
if(T is List)
Object containedType = T.WhatGoesHere()?
...
В приведенном выше коде, мне нужно знать, если я могу преобразовать список в любой тип списка передается, например, в List<Control>
.Какой тип внутри общего контейнера
Есть ли способ опросить общий тип содержимого? Я мог бы получить List<Control>
, List<String>
, List<Form>
и т.д ..
Я мог бы разделить API для возврата списков в отдельном методе, где содержащийся тип передается в, таким образом, требует, чтобы вызывающий использовать один метод для списков и один для простых типов , В любом случае, они должны знать, что вернется, но если есть гладкий способ сделать то, о чем я прошу, я бы предпочел сохранить API просто.
Примечание: это решение, связанное с отсутствием ковариации, потому что, несмотря на наличие неявного оператора преобразования, определенного в содержащемся типе, сбрасывается список из списка в T. Итак, чтобы следовать решению listOfB.Cast<A>();
from here, мне нужно знать, что делать (что такое A).
Спасибо!
Вы можете использовать TYPEOF (T), а затем использовать отражение, чтобы получить аргументы родового типа – Charleh
Смотрите эту questi on: http://stackoverflow.com/questions/293905/reflection-getting-the-generic-parameters-from-a-system-type-instance – Charleh
Возможный дубликат [Как получить тип T из общего списка ] (http://stackoverflow.com/questions/557340/how-to-get-the-type-of-t-from-a-generic-listt) –