将代码添加到 C# 属性获取/设置而不需要支持字段?

2024-02-25

您知道如何拥有自动生成支持字段的属性吗?就像我去的话:

public String SomeProperty {get; set;}

我知道,如果我想向该属性添加代码,我必须创建支持字段,如下所示:

 public string someProperty = string.Empty;
 public string SomeProperty
 {
     get { return someProperty; }
     set
     {
         someProperty = value;
         DoSomething();
     }
 }

基本上,我想知道的是......有什么方法可以做到这一点,但不必创建支持字段?例如,我可以使用它来触发设置属性时发生的某种事件。我正在寻找这样的东西:

 public string SomeProperty
 {
     get;
     set { this.OnSomeEvent; }
 }

但我知道这会导致编译错误,因为get如果需要声明一个主体set does.

我研究过,但找不到任何东西,但我想我应该检查一下是否有人知道。

我想我真正想要的是在属性更改时触发事件的某种方式,但不必添加所有额外的混乱。有什么建议么?


简单的答案是否定的,你不能两者兼顾。从.NET 文档 https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties:

在 C# 3.0 及更高版本中,自动实现的属性使属性声明更加简洁当属性访问器中不需要额外的逻辑时。

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

将代码添加到 C# 属性获取/设置而不需要支持字段? 的相关文章

  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • 使用内部 setter 进行属性注入

    我正在修改一个现有应用程序以使用 Autofac 属性注入 似乎无论我使用哪种方法向属性注册类型 属性始终为 null 除非它们具有公共设置器 对于其他 IoC 容器 例如 Structuremap 可以使用 setter 内部范围并使其可
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock

随机推荐

  • 将 XML 资源传递给 XMLReader

    我正在尝试通过 xml文件来自我的res文件夹到XMLReader为了将其解析为对象 private void parseXML String parsedData try Log w AndroidParseXMLActivity Sta
  • 是否可以将 SDL2 与智能指针一起使用?

    我有这行代码 std unique ptr
  • strlen() 和 UTF-8 编码 [重复]

    这个问题在这里已经有答案了 假设UTF 8编码 PHP中的strlen 这个字符串的长度有可能是4吗 我只想了解 strlen 而不是其他函数 这是字符串 1 2 我在自己的电脑上测试过 验证了UTF 8编码 得到的答案是6 我在 strl
  • Client.ipa 不包含文件

    自从过去几天以来 我一直在为这个错误而烦恼 当我尝试提交基于 cordova 的 iOS 应用程序时 出现符号工具失败的错误 这是我的日志中的内容
  • nvcc 和 NVIDIA-smi 显示的不同 CUDA 版本

    我对运行时显示的不同 CUDA 版本感到非常困惑which nvcc and nvidia smi 我的 ubuntu 16 04 上安装了 cuda9 2 和 cuda10 现在我将 PATH 设置为指向 cuda9 2 所以当我跑步时
  • Android 列表视图中未显示顶部和底部分隔线

    按照我的理解 为列表视图定义的分隔线也应该出现在列表的顶部和底部 即第一个项目的上方和最后一个项目的下方 由于某种原因 它们没有出现在我的列表视图中
  • 出现错误:插件/预设文件不允许导出对象,只能导出函数

    我在使用 webpack 和 babel 设置我的 React 应用程序时遇到此错误 我尝试更改 babel 的版本 但仍然遇到相同的错误 我不明白问题出在哪里 ERROR in src index jsx Module build fai
  • 使用 Fluent NHibernate 执行 Sql 语句

    基本上我希望能够做到这一点 session ExecuteSql 我不需要它映射到任何实体或返回任何值 有什么建议么 正如已经提到的 这不是 Fluent NHibernate 问题 但这里有一个示例 public int GetSqlCo
  • 仅 CSS 中的上标?

    如何仅在 CSS 中完成上标 我有一个样式表 我用上标字符标记外部链接 但我很难正确对齐字符 我目前拥有的看起来像这样 a external after font size 50 vertical align top content 但它不
  • 参数允许包装泛型函数,但推断不允许

    当对函数参数使用推理时 如果不适用于实用程序类型参数 Typescript 会引发错误 举个例子 操场 https www typescriptlang org play code JYOwLgpgTgZghgYwgAgGLADaSgHgC
  • 如何每天下午 2 点运行 TimerTask?

    我想每天下午 2 点执行一项工作 哪种方法java util Timer我可以用它来安排我的工作吗 2 小时后 运行它将停止作业并重新安排到第二天下午 2 点 Calendar today Calendar getInstance toda
  • 如何识别4个方向的滑动?

    我需要识别各个方向的滑动 上下左右 不是同时 但我需要认出它们 I tried UISwipeGestureRecognizer Swipe UISwipeGestureRecognizer alloc initWithTarget sel
  • Spring - 使用 XSLT 的网页

    我是 XSLT 的新手 我知道将 XSLT 集成到 Spring Web 应用程序中的最佳解决方案是什么 我找到了简单的例子here http www java2s com Code Java JSP JSPXMLandXSLTtransf
  • glmer - 使用二项式数据进行预测(cbind 计数数据)

    我正在尝试预测在我的二项式数据上运行的 glmer 模型随时间的变化 x 轴中的天数 的值 Total Alive 和 Total Dead 是计数数据 这是我的模型 以及下面相应的步骤 full model dredge lt glmer
  • C# 扩展方法不允许通过引用传递参数吗?

    在 C 中创建一个将实例作为引用传递的扩展方法真的不可能吗 下面是一个 VB NET 控制台应用程序示例 Imports System Runtime CompilerServices Module Module1 Sub Main Dim
  • 如何使用 angularjs $http.delete() 请求发送数据?

    我有一个资源 角色 它与 用户 有多对多的关系 要管理 角色 我需要将角色 ID 和用户 ID 发送到服务器 以便它从正确的用户 不一定是登录用户 中删除角色 这是我正在尝试的 但根据docs http docs angularjs org
  • 将变量传递给工厂 angularjs

    我想将一个变量传递给我的工厂 但我不太确定如何做到这一点 这是我的代码 var app angular module docFinder app factory docFactory function http var url http t
  • 选择 XML 元素,无论 XPATH 的级别如何

    我有这个 a b b a
  • 如何使用 Node.js 最有效地解析网页

    我需要解析一个简单的网页并从 html 中获取数据 例如 src data attr 等 如何使用 Node js 最有效地完成此操作 如果有帮助 我正在使用 Node js 0 8 x 附 这是site http tunes io 我正在
  • 将代码添加到 C# 属性获取/设置而不需要支持字段?

    您知道如何拥有自动生成支持字段的属性吗 就像我去的话 public String SomeProperty get set 我知道 如果我想向该属性添加代码 我必须创建支持字段 如下所示 public string someProperty