我正在尝试使用Unity解决TimeSpan。执行容器 Resolve 调用会导致FatalExecutionEngineError。
检测到 FatalExecutionEngineError 消息:运行时遇到致命错误。错误地址位于线程 0x1bb8 上的 0x543c3dc8。错误代码为 0xc0000005。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
在 DEBUG 中运行测试会导致调试器请求以下文件。
X:\Unity\Src\ObjectBuilder\Strategies\BuildPlan\DynamicMethod\DynamicMethodBuildPlan.cs
它在第 38 行显示了以下ExecutionEngineException。
System.ExecutionEngineException 未处理 Message="抛出了 'System.ExecutionEngineException' 类型的异常。" 内部异常:
测试
[TestClass]
public class Example
{
private readonly IUnityContainer container = new UnityContainer();
[TestInitialize]
public void TestInitialize()
{
container.Register<TimeSpan>(new ExternallyControlledLifetimeManager());
}
[TestMethod]
public void Test()
{
var expected = new TimeSpan();
var actual = container.Resolve<TimeSpan>();
Assert.AreEqual(expected, actual);
}
}