ArrayConvert/Program.cs

48 lines
1.4 KiB
C#

using System;
using System.Linq;
using System.Collections;
using System.ComponentModel;
public class Program
{
public static void Main()
{
var args = new string[] { "20", "40", "69" };
// var value = ConvertObjectsToArray<int[]>(args);
var dummy = new float[1];
var array = ConvertObjectsToArray(dummy.GetType(), args);
Console.WriteLine(array);
}
private static IList ConvertObjectsToArray(Type arrayType, string[] args)
{
if (!arrayType.GetInterfaces().Contains(typeof(IList)))
return null;
IList arrayInstance = (IList)Activator.CreateInstance(arrayType, args.Length);
Type elementType = arrayType.GetElementType();
TypeConverter typeConverter = TypeDescriptor.GetConverter(elementType);
for (int i = 0; i < args.Length; i++)
arrayInstance[i] = typeConverter.ConvertFromString(args[i]);
return arrayInstance;
}
private static T ConvertObjectsToArray<T>(string[] args) where T : IList
{
Type arrayType = typeof(T);
T arrayInstance = (T)Activator.CreateInstance(arrayType, args.Length);
Type elementType = arrayType.GetElementType();
TypeConverter typeConverter = TypeDescriptor.GetConverter(elementType);
for (int i = 0; i < args.Length; i++)
arrayInstance[i] = typeConverter.ConvertFromString(args[i]);
return arrayInstance;
}
}