UPDATE 发现问题 - 从错误的类继承,需要是JsonConverter.
我有一个具有System.Data.Entity.Spatial.DbGeography类型的Location属性的类.默认的Json.NET序列化程序输出JSON文本,如下所示:
...
"PlaceType": 0,
"Location": {
"Geography": {
"CoordinateSystemId": 4326,
"WellKnownText": "POINT (-88.00000 44.00000)"
}
},
"AddedDT": null,
...
Run Code Online (Sandbox Code Playgroud)
我想要它发出这样的文字:
...
"PlaceType": 0,
"Location": [-88.00000,44.00000],
"AddedDT": null,
...
Run Code Online (Sandbox Code Playgroud)
...所以在我看来,我应该做的是覆盖当前在DbGeography类型上使用的任何转换器.
到目前为止我看到的使用CustomCreationConverters和ContractResolvers的示例似乎解决了如何替换序列化的主类的序列化程序,而不是仅仅是该类属性的类型.涉及对被覆盖的类进行注释的示例对我不起作用,因为我没有在我的代码中定义DbGeography,它实际上是一个密封类,因为它没有构造函数,只能通过internal
工厂方法实例化.
有没有办法将JsonConverter流畅地应用于某种类型?如果是这样,转换器会是什么样子?我只是覆盖WriteJson()方法吗?
我有一个很大的经典ASP应用程序,我必须维护,我反复发现自己因缺乏短路评估能力而受阻.例如,VBScript不会让你逃脱:
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...
Run Code Online (Sandbox Code Playgroud)
...因为如果Rs("myField")为null,则在第二个条件中出现错误,将null与0进行比较.所以我通常最终会这样做:
dim myField
if isNull(Rs("myField")) then
myField = 0
else
myField = Rs("myField")
end if
if myField <> 0 then
...
Run Code Online (Sandbox Code Playgroud)
显然,冗长是非常可怕的.看看这个庞大的代码库,我发现最好的解决方法是使用原始程序员编写的一个函数,名为TernaryOp,它基本上采用三元运算符式功能,但我仍然坚持使用一个不会的临时变量在功能更全面的语言中是必要的.有没有更好的办法?VBScript中确实存在一些超级秘密的短路方法吗?
每次启动Visual Studio时,第一次单击"添加引用"以向项目添加DLL引用时,默认情况下,将选中该对话框上的.NET选项卡.正如大多数阅读此内容的人可能已经注意到的那样,要填写完整的.NET组件列表,可能需要很长时间 - 通常超过30秒.
但是,由于我们设计解决方案的方式,大约80%的时间,我想从"项目"选项卡或"浏览"选项卡中进行选择.
Visual Studio中是否有任何设置可以让"Projects"成为第一个加载的选项卡?有没有人知道任何其他隐藏的技巧来达到同样的效果?