Заполняющий общий объект, который, как известно, является массивом во время выполненияC#

Место общения программистов C#
Anonymous
Заполняющий общий объект, который, как известно, является массивом во время выполнения

Сообщение Anonymous »

У меня есть общий метод, который возвращает тип 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

Вернуться в «C#»