Cra*_*des 30 c# reflection compact-framework .net-2.0
我正在尝试在编译时反序列化一个未知类型的数组.在运行时我发现了类型,但我不知道如何创建实例.
就像是:
Object o = Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为没有无参数构造函数,Array似乎没有任何构造函数.
Jon*_*eet 57
Ant*_*nes 12
您可以使用Array的CreateInstance重载之一,例如: -
object o = Array.CreateInstance(type, 10);
Run Code Online (Sandbox Code Playgroud)
相当旧的帖子,但在回答一个新问题时,虽然发布了创建多维数组的相关示例。
例如,假设类型 ( elementType
) asint
和一个二维数组。
var size = new[] { 2, 3 };
var arr = Array.CreateInstance(typeof(int), size);
Run Code Online (Sandbox Code Playgroud)
例如,当它是二维时,它可以填充为
var value = 1;
for (int i = 0; i < size[0]; i++)
for (int j = 0; j < size[1]; j++)
arr.SetValue(value++, new[] { i, j });
//arr = [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
Run Code Online (Sandbox Code Playgroud)