我正在尝试在结构中使用类型为ImmutableArray<T>
的静态字段,其中T
是结构的类型。但是,当我尝试这样做时,我在执行程序时立即获得TypeLoadException
。这似乎发生在程序本身甚至开始运行之前。没有可用的堆栈跟踪,我无法单步执行任何操作。这是一个说明问题的简单示例:
namespace Alpha
{
using System;
using System.Collections.Immutable;
internal class Program
{
private static void Main(string[] args)
{
var simple = new Simple(0);
Console.WriteLine(simple.Index);
Console.ReadLine();
}
public struct Simple
{
public static readonly ImmutableArray<Simple> Values =
ImmutableArray<Simple>.Empty;
public Simple(int index)
{
Index = index;
}
public int Index { get; }
}
}
}
这是我得到的错误代码:
System.TypeLoadException未处理
消息:mscorlib.dll中发生了未处理的“System.TypeLoadException”类型异常
附加信息:无法从程序集'Alpha,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加载'Alpha.Program + Simple'类型。
如果我没有通过删除ImmutableArray<Simple>.Empty
来初始化字段,它仍然无法运行。但是,如果我将静态字段更改为以下任一项,则程序运行正常:
public static readonly ImmutableList<Simple> Values = ImmutableList<Simple>.Empty;
public static readonly Simple[] Values = new Simple[0];
我正在使用Visual Studio Community 2015和System.Collections.Immutable Version 1.1.37。