将 appsetting.json 部分绑定到具有非公共属性或具有不匹配名称的属性的模型

2024-04-08

.net6 - 我工作正常

{
  "SomeSetting": {
    "A": "value1",
    "B": "value2"
  }
}
internal class MyClass // <-- NOTE, the class is internal
{
    public string A { get; set; } // <-- but property must be public, including public setter
    public string B { get; set; }
}

. . . . .
var inst = config.GetSection("SomeSetting").Get<MyClass>();

效果很好^^。

但除非属性具有名称或访问级别 - 公共,否则它不具有约束力。有可能有这样的东西吗? --

internal class MyClass 
{
    internal string A { get; set; } // <-- internal
    internal string B { get; set; }
}

or

internal class MyClass 
{
    public string A { get; internal set; } // <-- internal setter
    public string B { get; internal set; }
}

or

internal class MyClass 
{
    [SomeAttribute()]
    internal string A { get; set; } // <-- internal

    // or
    [SomeOtherAttribute("B")]
    internal string BBB { get; set; } // <-- property name is not matching json file
}

我没有深入研究DLL,我认为这是JSON绑定,所以我尝试了using System.Text.Json.Serialization; JsonPropertyNameAttribute JsonIncludeAttribute

但到目前为止 - 没有运气


我找到了路。这System.Text.Json 的不变性 https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-immutability?pivots=dotnet-6-0@KirkWoll 提供的(谢谢 - 很好的学习)不起作用。我想,我不能保证.Get<MyClass>()使用该技术。我尝试了文档中描述的所有方法,但没有成功。

但有一个简单的方法,就在那里。您只需像这样创建只读模型

public class MyClass 
{
    public string A { get; private set; } 
    public string B { get; private set; }
}

并像这样绑定它 - 使用附加选项

var inst = config.GetSection("SomeSetting")
    .Get<MyClass>(options => { options.BindNonPublicProperties = true; });

这解决了只读模型绑定到 JSON 的问题IConfiguration

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

将 appsetting.json 部分绑定到具有非公共属性或具有不匹配名称的属性的模型 的相关文章

  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • 如何使用 zlib 制作 .zip 文件

    我正在阅读zlib的文档 它相当详细 但我读到了这一行 输出数据将位于zlib格式 与 gzip 或zip formats http www zlib net zlib how html http www zlib net zlib how
  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • 从 C 结构生成 C# 结构

    我有几十个 C 结构 我需要在 C 中使用它们 典型的 C 结构如下所示 typedef struct UM EVENT ULONG32 Id ULONG32 Orgin ULONG32 OperationType ULONG32 Size
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • 为什么要在 C++ 中使用 typedef?

    可以说我有 set
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • ASP.NET JQuery AJAX POST 返回数据,但在 401 响应内

    我的应用程序中有一个网页 需要调用我设置的 Web 服务来返回对象列表 这个调用是这样设置的 document ready function var response ajax type POST contentType applicati
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include
  • 受限 AppDomain 中的代码访问安全异常

    Goal 我需要在权限非常有限的 AppDomain 中运行一些代码 它不应该访问任何花哨或不安全的内容 except对于我在其他地方定义的一些辅助方法 我做了什么 我正在创建一个具有所需基本权限的沙箱 AppDomain 并创建一个运行代

随机推荐

  • PHP MYSQL - 根据行号是否匹配行号填充 HTML 表编号行

    所以 基本上我正在尝试制作数据中心驾驶室图 我们有一个 Excel 电子表格 但它不容易更新 也不容易搜索 我的 MySQL 数据库中有三个表 数据库是 机架 表格是 机柜 设备和数据中心 每个表格中的每一行代表它是什么 机柜表有一列指定其
  • 如何中断无限循环

    虽然我知道这样问有点傻 但我仍然想更多地了解它的技术角度 无限循环的一个简单示例 public class LoopInfinite public static void main String args for System out pr
  • 使用 Iframe 的自定义用户代理

    是的 我已经读过使用不同的用户代理加载 iframe 内容 https stackoverflow com questions 12845445 load iframe content with different user agent但我
  • PhantomJS 在评估之前更改网页内容

    我想在评估 渲染网页之前删除 HTML 元素或简单地删除网页的前 N 个字符 有什么办法可以做到这一点吗 这取决于多种场景 我将仅概述以下问题的每种答案组合的步骤 是不是有一段JS叫做onload ol 或者脚本块立即被评估 ie 它是内联
  • 使用 JavaScript 进行地理位置定位

    我正在编写一个脚本来获取地理位置 纬度 经度 我可以使用它来将我的谷歌地图实例居中 目前我使用两种可能的技术 其一是google loader ClientLocation目的 我还没有测试过这个 因为它为我返回 null 我想是因为我不住
  • 使用内置显卡,没有NVIDIA显卡,可以使用CUDA和Caffe库吗?

    使用内置显卡 没有 NVIDIA 显卡 可以使用 CUDA 和 Caffe 库吗 我的操作系统是 ubuntu 15 CPU为 Intel i5 4670 3 40GHz 4核 内存为12 0GB 我想开始学习深度学习 CUDA 适用于 N
  • 如果分析器不是答案,我们还有什么其他选择?

    看完Joshua Bloch的演讲 绩效焦虑 后 我读了他在演讲中建议的论文 评估 Java 分析器的准确性 http www plan cs colorado edu klipto mytkowicz pldi10 pdf 引用结论 我们
  • 将 Oracle 日期解析为 Java

    我正在查询数据库并获取格式为 01 SEP 22 的日期 我想在Java中将此日期转换为 yyyy MM dd 格式 我有什么办法可以做到这一点吗 java time 我建议您使用 java time 现代 Java 日期和时间 API 来
  • 如果 $(window).load() 已弃用,我应该使用什么?

    我需要一个在页面完全加载 文本 图像等 时调用的函数 我注意到 window load 现已弃用 那么 我应该使用什么 如果你想避免load函数 使用泛型on功能 window on load function insert code he
  • Drupal 中表的节点引用

    I have Drupal with CCK I have a content type named Article This Article has 5 Node references I m using the table field
  • 如何仅在筛选记录上使用 power bi 中的 MAX 函数?

    我试图选择具有最新日期的记录 数据库中的所有记录都有这些基本列 AssetNumber WorkOrderNumber ScheduledEndDate Department 我想查找特定部门中每项资产的所有最新工单 日期 我有一个基本的措
  • 具有引用数据成员的类的默认构造函数?

    我有课MyClass我需要在其中创建一个std array of std vector在默认构造函数中 但是 此类有一个数据成员 它是一个引用 类型为Something 它也需要在构造函数中初始化 但我无法在默认构造函数中执行此操作 我应该
  • 在 .NET 中,调用 .Count() 更好,还是调用 .Count(如果可用)更好?

    导入 Linq 命名空间后 可以同时使用 Count 和 Count 例如 在实现 IList 的对象上 Count 将调用 Count 属性 如果可用 如下所示 C Count 扩展方法性能 https stackoverflow com
  • Spring AOP(方面)未执行

    我使用 Spring 2 5 6 asm 1 5 3 aspectjrt aspectjweaver 1 6 1 cglib 2 1 3 在我的基于 Web 的 Spring 应用程序中 我有以下类 package uk co txttoo
  • Yii、ajax、按钮。如何防止多个JS onclick绑定

    首先 英语不是我的母语 如果我可能弄错了 我很抱歉 我创建了 Yii Web 应用程序 其中主页上有输入表单 该表单在通过 ajax 请求单击按钮后出现 表单上有一个 取消 按钮 可以使带有表单的 div 不可见 如果我单击 显示表单 和
  • 将 Google Drive 的“计算机”挂载到 Colaboratory

    我研究了官方的一些加载数据到Colaboratory的方法 但它仅通过命令将colab与Google Drive的 My Drive 文件夹连接 驱动器 mount content gdrive colab目录树的图片 https i st
  • 为什么默认情况下不是所有 React 组件都用 React.memo() 包装?

    我刚刚了解到React memo 并想知道 我们什么时候不想要这种行为 我们不是总是希望组件仅在其 props 发生更改时才重新渲染吗 这是因为记忆本身不是免费的 你不应该在任何地方使用它 因为 记忆化本身在比较一个渲染与下一个渲染的值时会
  • Vulkan:在多个命令缓冲区中排序图像内存屏障

    对于资源转换 您需要了解 之前 和 之后 VkImageLayout资源的 例如 在VkImageMemoryBarrier传递给vkCmdPipelineBarrier Vulkan 不保证命令缓冲区执行的任何顺序 除非 API 文档中明
  • 如何计算逆运动学[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道如何使用逆运动学计算旋转角度 我计划将其用于实时 3D 动画 有人知道一些详细介绍具体解决方案的好文献吗 以下资源调查了逆运动学问题的一些流行
  • 将 appsetting.json 部分绑定到具有非公共属性或具有不匹配名称的属性的模型

    net6 我工作正常 SomeSetting A value1 B value2 internal class MyClass lt NOTE the class is internal public string A get set lt