在C#中,可以将数组类型转换为单数 - 用于 Activator.CreateInstance 。以此为例:
void Main()
{
var types = new[] { typeof(ExampleClass), typeof(ExampleClass[]) };
var objects = new List<object>();
foreach (var type in types)
{
// possibly convert type here? (from array to singular - type[] to type)
Debug.WriteLine($"{type}");
objects.Add(Activator.CreateInstance(type));
}
}
// Define other methods and classes here
public class ExampleClass
{
public int X;
public int Y;
}
获取以下输出:
答案 0 :(得分:1)
如果我理解你的问题,你可能想要通过反射使用Type.GetElementType()这样的东西。
INSERT INTO ... SELECT ... ;
答案 1 :(得分:1)
如果我正确理解你的问题,你想获得数组的基类型,对吧?使用该类型的IsArray
属性应该非常简单,只需检查列表中的每个条目,如下所示:
private static Type GetTypeOrElementType(Type type)
{
if (!type.IsArray)
return type;
return type.GetElementType();
}
顺便说一下,如果你想创建一个特定类型的新数组,你可以使用Array.CreateInstance
而不是Activator.CreateInstance
答案 2 :(得分:0)
发现这有效:
void Main()
{
var types = new[] { typeof(ExampleClass), typeof(ExampleClass[]) };
var objects = new List<object>();
foreach (var type in types)
{
Debug.WriteLine($"{type}");
objects.Add(type.IsArray
? Activator.CreateInstance(type, 1)
: Activator.CreateInstance(type));
}
}
// Define other methods and classes here
public class ExampleClass
{
public int X;
public int Y;
}