Задача такова: есть функция которая на вход принимает массив типа Object с неограниченным количеством элементов. Элементами массива должны быть массивы любых типов. Мне нужно склеить эти самые массивы в один, но при условии что у переданных массивов совпадают типы данных, в противном случае нужно вывести
null. Я уже реализовал проверку на совпадение типов данных массивов, довольно коряво, но это не важно, вопрос в другом: я не могу склеить переданные массивы в один. Вот мой код:
static Array Combine(params Object[] array)
{
List<Type> types = Type.GetTypeArray(array).OrderBy(x => x.Name).ToList(); //отсортированный список типов данных элементов
List<Type> typesWithoutDublicates = new List<Type>(); //список тех же типов но без дубликатов
for (int i = 0; i < types.Count - 1; i++)
if (types[i] != types[i + 1])
typesWithoutDublicates.Add(types[i]);
if (typesWithoutDublicates.Count > 0) //если элементов больше нуля значит типы не совпадают
return null;
//требуется помощь в этом участке кода:
Array resultArray = Array.CreateInstance(array.GetType().GetElementType(), array.Length); //создание массива
Array.Copy(array, resultArray, array.Length);
return resultArray;
}
Входные данные:
public static void Main()
{
var ints = new[] { 1, 2 };
var strings = new[] { "A", "B" };
Print(Combine(ints, ints, ints));
Print(Combine(ints));
Print(Combine());
Print(Combine(strings, strings));
Print(Combine(ints, strings));
Print(Combine(ints, ints));
}
Метод Print:
static void Print(Array array)
{
if (array == null)
{
Console.WriteLine("null");
return;
}
for (int i = 0; i < array.Length; i++)
Console.Write("{0} ", array.GetValue(i));
Console.WriteLine();
}