То, что вы пытаетесь сделать, не скомпилируется (как я уверен, вы знаете)
public static void ListFromType(Type suppliedTableType)
{
List<supliedTableType> myList = new List<suppliedTableType>();
}
Во-первых, метод void
, что означает, что он ничего не возвращает, во-вторых, вы используете экземпляр System.Type
в качестве параметра универсального типа, который не работает.
Когда вы смотрите на проблему, возникает вопрос: зачем вообще это вообще делать? Вам всегда нужно знать тип для создания экземпляра списка, так почему бы просто не размещать список напрямую все время? Зачем вызывать вспомогательный метод, чтобы просто сделать:
List<myTable> someList = new List<myTable>();
// or to save yourself from typing myTable twice
var someList = new List<myTable>();
Если вы действительно хотите какой-нибудь модный Linq, который достигает той же самой вещи , вы можете использовать Enumerable.Empty<T>
и вызывать ToList()
на нем:
List<myTable> someList = Enumerable.Empty<myTable>().ToList();
Если ваша цель - создать списки на основе переменной System.Type
(как указано в некомпилируемом примере кода), вам придется использовать смесь методов Reflection и других Enumerable
. @Camilo указал довольно актуальный вопрос и ответ , который может помочь в этом направлении. Ваш вопрос был помечен с помощью Generics, а не Reflection, поэтому я не хочу делать слишком много предположений.