我正在尝试使用来自 PowerShell 的 Leonardo B 的litjson库。我需要使用的库的入口点是一个静态方法。我可以使用 add-type 加载程序集,没问题。尝试使用静态方法虽然会出现此错误:
PS C:\Users\david>[litjson.jsonmapper]::toobject("{`"foo`":`"bar`"}")
format-default : The JsonData instance has to be initialized first
+ CategoryInfo : NotSpecified: (:) [format-default], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.FormatDefaultCommand
我认为发生的事情是该类的静态构造函数没有运行,但 Lars Truijens 纠正了这种误解。该错误是 JsonData 类的异常。尽管同一行代码在 VS2012(针对 .net 3.5)中正常工作,但它不会在 powershell 中运行。
更新:
此单元测试在 Visual Studio 2012 中通过:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using LitJson;
namespace litjsonTest
{
[TestClass]
public class TestJsonMapper
{
[TestMethod]
public void TestMethod1()
{
var obj = LitJson.JsonMapper.ToObject("{\"foo\":\"bar\"}");
Assert.IsNotNull(obj);
}
}
}