小编Rok*_*Rok的帖子

在 .NET Core 3.0 上的 Web API 上禁用 System.Text.Json

我想在 .NET Core Web API 3.0.0 上显式使用遗留库进行序列化/反序列化。 Newtonsoft.Json无论我做什么,总是System.Text.Json涉及并且不使用定制的 Newtonsoft 转换器。

ConfigureServices中的方法startup.cs看起来像这样:

 public void ConfigureServices(IServiceCollection services)
        {
// ...
            services.AddControllers()
                .SetCompatibilityVersion(CompatibilityVersion.Version_3_0)
                .AddNewtonsoftJson(options =>
                    {
                        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                        options.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
                        options.SerializerSettings.Converters.Add(new CustomGeoJsonConverter());
                    }
                );
// ...
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我尝试使用自定义CustomGeoJsonConverter,并且在序列化时,该对象中没有任何活动。类似的代码在 .NET Core 2.2 中运行正常。

c# json.net asp.net-core-3.0 .net-core-3.0 system.text.json

7
推荐指数
0
解决办法
1266
查看次数

为什么NetTopologySuite v2.0没有实现GeoAPI?

Net Topology Suite 2.0 版本发生了什么?我的主要考虑是:

  • 它不再实现 Geo API(我喜欢它的想法)
  • 接口在哪里ICoordinateSystem(如何使用 NTS 将几何图形从一个坐标系转换到另一个坐标系)?

nettopologysuite

5
推荐指数
1
解决办法
1888
查看次数

将 IConfiguration 绑定到 C# 记录类型

我想将配置绑定到记录类型。

这是配置类型的定义(它没有无参数构造函数):

public record AppConfiguration(string ConnectionString);
Run Code Online (Sandbox Code Playgroud)

这是示例Main方法:

public static void Main(string[] args)
{
    var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
    AppConfiguration appConfig = new(); // error
    configuration.GetSection("app").Bind(appConfig);
}
Run Code Online (Sandbox Code Playgroud)

如果我将定义转换为:

public record AppConfiguration
{
    public string ConnectionString {get; init;}
}
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但我宁愿使用记录的“单行”定义。这个用例的记录是正确的吗?

c# configuration c#-record-type

5
推荐指数
2
解决办法
197
查看次数

使用 System.Text.Json 反序列化不可变记录数组

假设我们有这些记录:

public record ResponseFake
{
    [JsonConstructor]
    public ResponseFake(OhlcFake[] quotes)
    {
        Quotes = quotes;
    }
   public OhlcFake[] Quotes { get; }
}
public record OhlcFake
{
    [JsonConstructor]
    public OhlcFake(QuoteFake o)
    {
        O = o;
    }
    public QuoteFake O { get; }
}
public record QuoteFake
{
    [JsonConstructor]
    public QuoteFake(decimal bid)
    {
        Bid = bid;
    }
    public decimal Bid { get; }
}
Run Code Online (Sandbox Code Playgroud)

这个 XUnit 测试:

[Fact]
public void QuoteChartResponseFakeDeserializationTest()
{
    var data = @"{""quotes"": [ { ""o"": { ""bid"": 1.1 } …
Run Code Online (Sandbox Code Playgroud)

c# system.text.json

4
推荐指数
1
解决办法
2897
查看次数

是否可以在 .NET Framework 4.x 中使用带有 C# 9 Records 的库

有没有办法用记录创建库,然后在旧的.NET Framework 4.x 应用程序中使用它?

.net c#-9.0

3
推荐指数
1
解决办法
123
查看次数