为什么我们不能在 C# 中使用公共字段进行数据绑定?

2024-01-05

我知道使用属性相对于字段的优点,例如能够在将来需要时提供额外的逻辑。

但我真的想知道为什么不能使用公共字段进行数据绑定,甚至不能使用 JavaScriptSerializer 类等 JSON 序列化器。

在这些情况下有什么充分的理由忽略公共字段吗?或者这只是某种约定?或者只是为了强制用户使用属性?


简短的版本是始终使用属性而不是public(或者,实际上,甚至protected) 字段从一开始就是 .NET 中的基本设计选择。

稍长的版本是添加了对public字段会增加数据绑定框架的复杂性(无论您指的是哪一个)。字段还缺乏对更改通知的任何类型的支持,这是数据绑定的一个相当重要的方面(至少在像 Winforms 开发这样的有状态环境中)。即使在检索和设置值的级别,字段和属性也是不同的;虽然 VB.NET 或 C# 中用于检索或设置属性值的语法(按照设计)与字段的语法相同,但在数据绑定等编程场景中用于执行此操作的机制对于属性与属性而言是不同的。字段。

最后,这一切都意味着需要更多的工作来向任何数据绑定场景添加对公共字段的支持,因此由于它是一种反模式,无论如何这项工作都没有完成。

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

为什么我们不能在 C# 中使用公共字段进行数据绑定? 的相关文章

  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 我应该使用 PhoneGap 而不是增加 Android SDK 吗?

    虽然我对 Java 很熟悉 但我在 Web 开发方面有更多的经验 我希望开始编写简单的 Android 游戏 我是否应该只使用 Javascript HTML 来编写所有内容 而忘记在 Java Android SDK 上进行升级 我想我的
  • AngularJS 单击时更改控制器中的部分内容

    我正在开发一个仪表板应用程序 其中同时显示一组模块 我想向这些模块添加多个 视图 例如 Github 模块的第一个视图是存储库列表 当您单击该模块中的存储库链接时 模块中的该视图将被替换为一个新屏幕 显示有关该存储库的所有详细信息 但是 我
  • ASP.Net MVC 3 登录和 Windows 身份验证

    我正在开发 ASP Net MVC 3 应用程序 并且有一个存储用户名及其密码的用户表 我创建了一个额外的 ADUsername 存储 Active Directory 的域 用户名 我正在尝试执行以下操作 从 Intranet 运行应用程
  • Cl.exe 返回错误代码 D8050

    我在使用 microsoft Visual Studio Ultimate 2013 全新安装 Windows 8 时出现以下错误 cl Command line error D8050 cannot execute C Program F
  • 如何通过 urlfetchapp 发送带有有效负载中的数组的 post 请求

    我需要模拟从 html 表单到页面的 post 请求 我需要知道如何在有效负载中正确发送数组 提前致谢 我有简单的 html 代码 目标页面将以这种方式收到提交 args data files form Link picturelink1
  • 重定向到文件后使用 cout 或 cerr 输出到控制台

    将 cout 或 cerr 重定向到文件非常容易 我可以用它来将第三方输出重定向到文件 但是 当我将第三方输出重定向到文件后 我自己如何使用 cout 输出到控制台 我是 RAII 的忠实粉丝 所以我曾经编写过这个小助手类 它将重定向流 直
  • 使用依赖网络的代码进行单元测试

    我正在努力更好地对我的代码进行单元测试 但现在我正在编写大量处理远程系统的代码 SNMP WMI 之类的 对于大多数类 我可以模拟对象来测试它们 但是如何处理真实系统的单元测试呢 例如 如果我的类出去并获取服务器的 Win32 Logica
  • Python Selenium 等待任何文本

    我有一个硒测试 需要等到填充任何文本而不是精确的文本字符串匹配 我了解到text to be present in element text to be present in element value可以用于这种类型的目的 但我可能需要像
  • iOS 中解析 JSON 与解析 XML

    设想 我正在开发一个解析器 用于在发出请求后从服务器发回的数据 数据的格式是 JSON 或 XML 问题 是否有理由选择其中一种格式而不是另一种 解析 json 和解析 xml 哪个更快 谢谢大家 当 JSON 成为首选时 通常是因为它要短
  • 向量化 for 循环以加速 R 中的程序

    我正在寻找一些简单的矢量化方法for loop在 R 中 我有以下数据框 其中包含句子和两本正面和负面单词的字典 Create data frame with sentences sent lt data frame words c jus
  • 如何使用Java Math Commons CurveFitter?

    如何使用 Math Commons CurveFitter 将函数拟合到一组数据 我被告知使用 CurveFitterLevenbergMarquardt优化器 and 参数单变量函数 但我不知道在 ParametricUnivariate
  • 无法在 asp.net core 2.0 中发布原始类型

    我将非常简单的 json 数据发布到 net Core 2 0 API 为什么我有这样的方法 public async Task
  • Golang 从哪里获取根 CA?

    crypto tls Config RootCAs states https golang org pkg crypto tls Config RootCAs defines the set of root certificate auth
  • 确定列上使用的最大小数位数

    在 MS SQL 中 我需要一种方法来确定某个十进制列的行所使用的最大比例 例如 Col1 Decimal 19 8 的小数位数为 8 但我需要知道是否实际使用了所有 8 个 或者是否仅使用了 5 6 或 7 样本数据 123 123450
  • 是什么导致以下程序中的分段错误[重复]

    这个问题在这里已经有答案了 如果我将行的值保留为 100000 则程序可以正常工作 但是如果我将行数 100 万设置为 1000000 则程序会出现分段错误 是什么原因 我在 Linux 2 6x RHEL 内核上运行 include
  • 快速比较 DateComponents

    Swift 中有没有方便的方式来表示 例如 15 个月大于 1 年 1 周小于 10 天 我感到DateComponents最能代表我的需求 所以我需要类似的东西 DateComponents year 1 gt DateComponent
  • 无法将 colorFilter 应用于文本选择手柄

    我正在尝试将材质文本选择句柄引入我的应用程序 我从 SDK 中获取了中 右 左手柄 位图 和文本光标 9 块 的可绘制对象 并设置
  • 将列类型编辑为固定宽度字符串(在现有的 Pandas 数据框中)

    我在 pandas 数据框中有一列字符串对象 我想将它们更改为效率较低的固定宽度字符串类型 有很多这样的答案 如何在pandas DataFrame中按列设置dtypes https stackoverflow com questions
  • Rails 3.1 + Heroku = Worker 崩溃

    所以 我刚刚建立了一个全新的 Rails 3 1 1 应用程序 Ruby 1 8 7 在那里放置一些脚手架 安装 Authlogic 并创建一个新的 Heroku 应用程序 将其推送到 Heroku 并迁移数据库 一切都很好 我可以使用 A
  • 为什么我们不能在 C# 中使用公共字段进行数据绑定?

    我知道使用属性相对于字段的优点 例如能够在将来需要时提供额外的逻辑 但我真的想知道为什么不能使用公共字段进行数据绑定 甚至不能使用 JavaScriptSerializer 类等 JSON 序列化器 在这些情况下有什么充分的理由忽略公共字段