У меня есть общий метод, который возвращает тип t (generic). В методе, если t является массивом, я хочу создать и заполнить этот массив данными и возвращать. Теперь у меня есть список объектов этого базового типа).
Я не могу понять, как поднять этот список в массив, а его тип T. Я мог бы построить массив с отражением, но я все еще не знаю, как его поднять в общий, даже когда они будут такими же типами. /> Ниже приведен какой -то упрощенный пример кода того, что я пытаюсь сделать. Указанная линия не будет компилироваться («не может преобразовать объект типа '[]» в «t»), но в конечном итоге я хочу достичь.static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Testing test = new Testing();
DataClass[] output = test.MyMethod();
}
public class DataClass
{
public int I = 0;
public DataClass()
{
}
}
public class Testing
{
public T MyMethod()
{
T result = default(T);
if (typeof(T).IsArray)
{
Type? baseType = typeof(T).GetInterfaces()
.Where(o => o.IsGenericType
&& o.GetGenericTypeDefinition() == typeof(System.Collections.Generic.IEnumerable))
.Select(o => o.GetGenericArguments()[0]).FirstOrDefault();
if (baseType != null)
{
List items = new List();
for (int i = 0; i < 5; i++)
{
// Just example code here to populate the array...
items.Add(Activator.CreateInstance(baseType));
}
result = (T)items.ToArray(); //
Подробнее здесь: https://stackoverflow.com/questions/796 ... at-runtime