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

2024-01-05

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

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

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


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

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

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

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

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

随机推荐

  • 我应该使用 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 序列化器 在这些情况下有什么充分的理由忽略公共字段