48 lines
1.4 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|