ASP.NET Core 5 既不尊重 JsonConverter 也不尊重 TypeConverter

2024-01-22

标题是非常不言自明的。 ASP.NET Core 5 既不尊重 JsonConverter 也不尊重 TypeConverter。

符号例如"TRX/USDT"应该被分割/并转换为new Symbol("TRX", "USDT")因为我已经这样做了。基本上,我想要services.Configure<BacktestOptions>(hostingContext.Configuration.GetSection(BacktestOptions.Backtest))自动解决它。

public IReadOnlyCollection<string> Symbols { get; set; }工作正常,但是public IReadOnlyCollection<Symbol> Symbols { get; set; }不能,因为它无法识别转换器类。

这个问题Asp.Net Core 3.1 Appsettings 不尊重 JsonConverter https://stackoverflow.com/questions/62820147/asp-net-core-3-1-appsettings-not-respecting-jsonconverter,回答这个问题的人说 TypeConverter 应该可以工作。

应用程序设置.json

{
  "Backtest": {
    "StartBalance": 1000, 
    "StakeCurrency": "USDT",
    "Symbols": [ "TRX/USDT", "BTC/USDT", "ETH/USDT" ]
  }
}

Snippet

public class Symbol
{
    public Symbol()
    {
    }

    public Symbol(string baseAsset, string quoteAsset)
    {
        BaseAsset = baseAsset;
        QuoteAsset = quoteAsset;
    }

    public string BaseAsset { get; set; }
    public string QuoteAsset { get; set; }
}

public class BacktestOptions
{
    public const string Backtest = "Backtest";
    
    [Required]
    [Range(100, 50000)]
    public decimal StartBalance { get; set; }
    
    [Required]
    [RegularExpression(@"^[a-zA-Z]+$")]
    public string StakeCurrency { get; set; }
    
    [Required]
    [TypeConverter(typeof(SymbolConverter))]
    public IReadOnlyCollection<Symbol> Symbols { get; set; }
}

public class SymbolConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context,
        Type sourceType)
    {
        if (sourceType == typeof(string))
        {
            return true;
        }

        return base.CanConvertFrom(context, sourceType);
    }
    public override object ConvertFrom(ITypeDescriptorContext context,
        CultureInfo culture, object value)
    {
        if (value is string v)
        {
            var parts = v.Split('/');

            return new Symbol(parts[0], parts[1]);
        }

        return base.ConvertFrom(context, culture, value);
    }
}

另外,JsonConverter 示例

public class SymbolConverter : JsonConverter<IReadOnlyCollection<Symbol>>
{
    public override IReadOnlyCollection<Symbol> Read(ref Utf8JsonReader reader, Type typeToConvert,
        JsonSerializerOptions options)
    {
        if (reader.TokenType == JsonTokenType.StartArray)
        {
            var values = JsonSerializer.Deserialize<string[]>(ref reader, options);

            var symbols = values.Select(value => value.Split('/')).Select(parts => new Symbol(parts[0], parts[1])).ToList();

            return new ReadOnlyCollection<Symbol>(symbols);
        }

        return null;
    }

    public override void Write(Utf8JsonWriter writer, IReadOnlyCollection<Symbol> value, JsonSerializerOptions options)
        => throw new NotImplementedException();
}

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Core 5 既不尊重 JsonConverter 也不尊重 TypeConverter 的相关文章

  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 允许共享起始/结束顶点的定向最大加权二分匹配

    令 G U u V E 为加权有向二分图 即 U 和 V 是二分图的两组节点 E 包含从 U 到 V 或从 V 到 U 的有向加权边 这是一个例子 在这种情况下 U A B C V D E F E A gt E 7 B gt D 1 C g
  • 无法在 Jest 中创建自定义测试环境

    我正在尝试使用 Jest 创建一个自定义测试环境 如其官方所述docs https jestjs io docs en configuration testenvironment string不幸的是我收到以下错误 确定要运行的测试套件 验
  • 如何在数组中查找对象并在 React 组件中显示它?

    我有数组cities与这样的对象 id 1 name New York id 2 name London 我的值为id 我将数组中的元素 名称 放入选择列表 但我需要添加第一个选项 其中包含数组 名称 中的值 该选项具有相应的 id 但我无
  • 带 Cron 作业的 Laravel 调度程序

    我正在使用 laravel 5 1 和 php5 我尝试创建我的 cron 作业来及时删除未付发票 但我测试它以打印用户日志以帮助我知道该作业正在运行 这是我的应用程序 Console Kernel php protected comman
  • 从 PNG 图像或 Java 面板创建 PDF

    我正在寻找一个可以获取图像 PNG 并创建 PDF 的 Java 库 或者直接从已绘制的java面板创建PDF 您可以使用 Gnostice PDFOne for Java 来实现此目的 http www gnostice com PDFO
  • System.IO.Directory.CreateDirectory 仅具有当前用户的权限?

    我希望 asp 应用程序创建一个只能访问该应用程序运行所用的帐户 即 asp 帐户 的文件夹 我其实想用this one http msdn microsoft com en us library 9h4z99zb aspx 但我不知道如何
  • 根据显示的片段替换工具栏布局

    我有一个带有导航抽屉的活动 它替换了活动上的 main fragment container 当显示其中一个片段时 我想更改工具栏的布局并向其添加一个微调器 并在片段隐藏时将其删除 我的布局看起来像这样
  • 如何保持变量和包含它的字典一致?

    我有一个变量 self foo 1 还有一本字典 self foo dict foo key self foo 我希望能够改变self foo并让它也改变self foo dict 如果这是在 C 中 并且字典是一个结构 我只会使用指针 有
  • 当缓冲区中有几个文件退出时 vim 崩溃

    我识别具有某些特征的文件并将它们拍摄到 vim 会话中 例如 grep rl a z xargs vim 除了警告之外 这有效 我在 vim 中打开了 7 个文件 一一编辑它们 使用 w等结束了 bn用于转到下一个文件 在我的会议结束时我做
  • 如何将 PowerShell 树输出到文本或 Excel 文件

    我有以下代码 readPath C FirstFolder writePath C SecondFolder Function Recurse folder lvl Get ChildItem Path folder File ForEac
  • 即使我关闭应用程序,我的 Android 应用程序中的背景音乐服务也会继续播放

    我正在使用后台服务在我的应用程序的所有活动中运行背景音乐 问题是 当应用程序运行时 它工作正常 但当我关闭它时 它会继续播放音乐 直到我从设备上卸载它 您认为这里的问题是什么 这是我的后台服务中的代码 Created by Naira on
  • ASP.NET 应用程序 - 设置 IE7 兼容模式?

    在 ASP NET 应用程序中设置 IE7 兼容模式来处理 IE8 问题的最简单方法是什么 是否可以通过 web config 进行设置 还是必须在 IIS 或页面级别进行设置 添加标题 X UA Compatible IE Emulate
  • 如何制作像 Stackoverflow 中那样的投票赞成或反对按钮?

    Problems 如何制作一个 Ajax 按钮 向上和向下箭头 使得数字可以增加或减少 如何将用户的操作保存到变量 Number Of Votes Of QuestionID 我不确定是否应该使用数据库作为变量 不过 我知道还有一种更简单的
  • 使用 php 创建 3 位毫秒

    我有 13 位数字 想要创建包含毫秒的日期和时间 示例代码是这样的这是我的 php 脚本 mil 1328910295939 seconds mil 1000 showdate date Y m d H i s seconds echo s
  • 通过 itext pdf 库进行图像旋转

    我无法通过在java程序中使用itext pdf库从中心或任何固定点旋转图像 当我旋转图像时 它的x和y坐标会发生变化 请在这方面帮助我 Image pdfImage Image getInstance assets product png
  • 通过 JDBC 显示多列索引的列名

    有谁知道如何获取跨多个列的索引的列名 请参阅SQL via JDBC 我确实知道如何获取所有索引列 请参阅代码 但这样我就无法看到哪些列链接到单个索引 CREATE TABLE IF NOT EXISTS foo id int 11 NOT
  • CSS3 Flexbox 布局一行最多 3 个子项目

    在将下一个子元素推入新行之前 CSS 中是否有一种简单的方法可以在同一行上拥有固定的最大子项数 据我了解 Flexbox 如果子项目在其上方的行上没有足够的可用空间 则只会将其推入新行 但我正在寻找一个 CSS 规则或函数 让我说 我希望任
  • 将用户表单复制到另一个工作簿

    我已经寻找过这个问题的答案 但找不到任何与我正在寻找的内容完全匹配的内容 如果有人有答案或可以为我指出一个可以回答这个问题的方向 那就是非常感激 我曾讨论过构建一个将数据输入工作簿的解决方案并已成功构建它 但是需要添加到的工作簿是一个非常活
  • 如何使用现代版本的 CodePipeline 进行 S3 部署

    我正在尝试使用最新版本的 AWS CDK for typescript 1 128 设置一个全新的管道 管道的创建非常简单 我已经添加了源代码和构建阶段 没有任何问题 这里的目标是自动部署静态登陆页面 到目前为止我有这段代码 const l
  • ASP.NET Core 5 既不尊重 JsonConverter 也不尊重 TypeConverter

    标题是非常不言自明的 ASP NET Core 5 既不尊重 JsonConverter 也不尊重 TypeConverter 符号例如 TRX USDT 应该被分割 并转换为new Symbol TRX USDT 因为我已经这样做了 基本