以字符串形式访问对象属性并设置其值

2024-01-09

我有一个实例Account班级。每个帐户对象都有一个所有者、引用等。

我访问帐户属性的一种方法是通过访问器,例如

account.Reference;

但我希望能够使用动态字符串选择器访问它,例如:

account["PropertyName"];

就像 JavaScript 中一样。所以我会account["Reference"]这将返回值,但我也希望能够在之后分配一个新值,例如:

account["Reference"] = "124ds4EE2s";

我注意到我可以使用

DataBinder.Eval(account,"Reference") 

获取基于字符串的属性,但使用它我无法为该属性分配值。

知道我该怎么做吗?


首先,你应该避免使用这个; C# 是一种强类型语言,因此请充分利用该方面带来的类型安全和性能优势。

如果您有正当理由动态获取和设置属性的值(换句话说,当类型和/或属性名称无法在代码中定义时),那么您必须使用反射。

最内联的方式是这样的:

object value = typeof(YourType).GetProperty("PropertyName").GetValue(yourInstance);
...
typeof(YourType).GetProperty("PropertyName").SetValue(yourInstance, "value");

但是,您可以缓存PropertyInfo对象以使其更具可读性:

System.Reflection.PropertyInfo prop = typeof(YourType).GetProperty("PropertyName");

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

以字符串形式访问对象属性并设置其值 的相关文章

  • 查找周边上的点来表示边界/形状

    我有一个简单的二维网格 其格式为myGrid x y 我正在尝试找到一种方法来找到所选网格周围的周长 这样我就有了所选网格的形状 这是我的意思的一个例子 这里的想法是找到所有相关的 角点 也就是图像周边的红点 放入一个列表中 这样我就可以从
  • 在 IEnumerable 中查找相同的集合

    有一项任务要弄清楚如何更新表 DataTable 连接到一个database没有UPDATE陈述 我想出的例子是从邮箱中读取警报 该表将写入 Alerts 如果邮件正文包含单词 SUCCESS gt Alert 变为绿色 如果 FAIL g
  • 如何将点击侦听器添加到 Android/Java Textview 中的字符串中?

    我想要完成的是大多数 Twitter 应用程序中的标准操作 在文本视图中 文本字符串中的单词前面可能有 提及或 主题标签 并且它们实际上能够添加点击侦听器这个词启动了另一项活动 有谁知道这是如何实现的 下面我附上了一张示例照片 显示了我想要
  • 使用 boost::asio 是否有一种可移植的方法来查找空闲端口号

    我目前正在尝试找出一种方法来查找空闲端口号以建立连接 最好使用 boost asio 然后 该端口号将用于侦听 只有这样我才能打开套接字 大致来说 有没有办法做到 tcp resolver query query localhost por
  • C# 中 value 为匿名类型的字典

    是否可以在 C 中创建一个System Collections Generic Dictionary
  • boost变体简单调用常用方法

    我有两个指针 只能设置其中之一 所以我正在考虑使用 boost variant 例如 boost variant
  • 在 .NET Core 上通过 MEF 将参数传递给插件构造函数?

    我花了几个小时试图弄清楚如何通过 MEF System Composition 将参数传递给插件构造函数 但一切都无济于事 不用说 相关文档很少 查看源代码也没有帮助 这曾经非常容易做到 使用 CompositionHost Compose
  • DLR 返回类型

    我需要 DLR 的帮助 我正在实现 IDynamicMetaObjectProvider 和 DynamicMetaObject 但在获取预期返回类型时遇到一些问题 我在元对象中覆盖 BindInvokeMember 我可以看到所有参数类型
  • std::make_shared 作为默认参数无法编译

    在 Visual C 2008 和 2010 中 以下代码无法编译并出现以下错误 include
  • 变形:Opencv 使用 Visual Studio 将图像显示到曲面屏幕

    我正在尝试使用 opencv API 来扭曲图像 以便将其显示到曲面屏幕上 我已经浏览了opencv中提供的翘曲apihere http docs opencv org 2 4 modules stitching doc warpers h
  • 创建 PING 程序时限制 ICMP 回显答复

    我正在编写一个多线程 ping 程序 我在每个线程 针对每个 IP 上创建了原始套接字 并使用 sendto 向每个线程发送了 ICMP Echo 请求 然后在每个线程中执行了 receivevfrom 我正在从各种套接字中的 IP 获取消
  • 在 4.x 内核上的 64 位内存中查找系统调用表

    我正在尝试编写一个简单的内核模块来查找 Linux 中的 sys call table 但遇到了一些麻烦 我在这里找到了 32 位 Linux 的基本指南 https memset wordpress com 2011 03 18 sysc
  • ASP.NET Core中间件如何进行DI?

    我正在尝试将依赖项注入到我的中间件构造函数中 如下所示 public class CreateCompanyMiddleware private readonly RequestDelegate next private readonly
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • 从资源文件获取 DisplayName [重复]

    这个问题在这里已经有答案了 我在 App GlobalResources 文件夹中有特定于文化的资源文件 现在我需要从此资源文件中读取 DisplayName 属性的值 我在用 Display Name MerchantName Resou
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin
  • 如何设置扬声器声音增强设置

    如何以编程方式设置 Windows 扬声器设置 增强 选项卡 中可用的声音效果 恐怕这是不可能的 参见 Maurits 对他的评论blog http blogs msdn com b matthew van eerde archive 20
  • 所有区域的启用保护模式必须设置为相同的值(启用或禁用)

    我正在尝试使用Selenium Internet Explorer驱动程序 但当我尝试实例化它时它崩溃了 TestInitialize public void TestInitialise ieDriver new InternetExpl
  • wpf中的图像问题(图像不显示)

    我不明白为什么我无法在 WPF 中显示图像 也许我不小心修改了我的资源文件夹 这就是我没有显示的原因 所以我创建了一个新的 wpf 应用程序 我有这个 当我运行该程序时 我的图片显示为 为什么当我尝试在程序中执行相同的操作时 图像没有显示
  • 在 C++11 中设置 std::thread 优先级的可移植方法

    在后 C 11 世界中设置 std thread 实例的优先级的正确方法是什么 是否有一种至少在 Windows 和 POSIX Linux 环境中有效的可移植方法 或者是获取句柄并使用可用于特定操作系统的任何本机调用的问题 无法通过 C

随机推荐

  • 在 Eclipse 项目中查找方法调用

    我有一个包含方法 myMethod 的类 X 我想在当前工作区的所有项目中找到调用 myMethod 的位置 我无法使用任何搜索函数 因为有多个类带有 myMethod 而且它不是静态的 因此 我需要知道此类的对象的名称 如果不手动探索项目
  • Jquery AJAX:如何更改“成功”按钮的值?

    我在一页上有多个按钮 单击后 我跟踪按钮 ID 将按钮值发送到后端 php 代码 该代码通过更改数据库返回更新的值 我能够取回我需要的一切 除了 成功设置按钮值 这是我正在使用的代码 document ready function inpu
  • 表单提交后验证重置

    我有带有复选框的表单 我希望用户至少选择其中之一 一切正常 但重置表单后我无法隐藏验证消息 这种情况在docs https logaretm github io vee validate guide forms html programma
  • 多个应用程序可以访问 SQLite 数据库吗?

    我遇到了一些数据库锁 SQLite BUSY 麻烦 我担心 SQLite 不适合我 基本上 我的设置是一个 cronjob 它定期调用一些不引人注目的 Java 功能和 项目中的新功能 通过一个名为 Jetty Jackson Hibern
  • Boost.Python 模块中未定义的符号

    我正在尝试使用 Boost Python 为模板库的某个实例构建一个小型 Python 扩展 该库广泛使用 CGAL 库 它与 CMake 集成得相当好 因此我将其用于我的项目 这是我的模块的代码 python export cpp inc
  • R partykit::ctree 边缘上的偏移标签

    我正在与ctree我的数据集有一个创建节点的协变量 该协变量有足够的因子 并且它们的名称足够长 以至于它们在节点创建的边中相互重叠 我想找到一种方法来阻止这种重叠 我检查了其他问题 发现一个answer https stackoverflo
  • 将 Bootstrap 导航栏转换为 WordPress 菜单

    我知道网上有很多关于此的主题 但我发现它们非常复杂 基本上我想将 Bootstrap 导航菜单转换为 WordPress 菜单 假设我有默认的 Bootstrap 导航栏
  • Java 音频流(mp3spi lib),UnsupportedAudioFileException

    我看到了多个关于流 MP3 流 如 Icecast 的 Stack Overflow 问题 他们都说使用 MP3SPI 库 我就是这样 MP3SPI 用于允许支持audio mpeg哑剧类型 这就是我的 Icecast 流 我的类路径中正确
  • 如何使用后缀到上标格式化当前日期?

    我正在使用SimpleDateFormatter public static final DateFormat DATE FORMAT FULL FULL SPACES new SimpleDateFormat dd MMMM yyyy L
  • 以编程方式导航到 SwiftUI 中的新视图

    描述性示例 登录屏幕 用户点击 登录 按钮 执行请求 UI 显示等待指示器 然后在成功响应后我想自动将用户导航到下一个屏幕 如何在 SwiftUI 中实现这种自动转换 成功登录后 您可以将下一个视图替换为您的登录视图 例如 struct L
  • 在焦点元素上按下转义键时不会引发按键事件

    I want to know when the Esc key is pressed on an input element On Chrome 47 0 2526 106 m the Esc key removes the focus b
  • 将 Windows Phone 8 SDK 添加到 Visual Studio 2012

    我的互联网连接非常糟糕 并且我有 Windows Phone 8 SDK 文件 但没有安装文件 有没有办法将 Windows 8 SDK 添加到 Visual Studio 而无需下载安装文件 不明白你的意思 您需要安装现有的 Visual
  • VueJS - 单击时交换组件

    在我的应用程序中 我有很多按钮 当我按下按钮时 我想加载一个模板 替换所选按钮 模板 Vue component component 1 Vue component component 2 Buttons div div
  • 哪些浏览器支持 Xpath 2.0?

    我最近一直在使用 XPath 并且一直在搜索有关哪些浏览器支持 XPath 2 0 的信息 但运气不佳 我能找到的最好的是查询技术对照表 http en wikipedia org wiki Comparison of layout eng
  • 我可以同时使用 DataContract 和 Serialized 吗?

    我正在从事 WCF 服务 我的所有类都已使用 Serializable 属性进行序列化 但由于 k BackingField 属性命名问题 我使用了 DataContract 和 DataMember 属性 所以我可以同时使用这两个属性 如
  • C# 列表和枚举器的属性

    我有以下问题 我有一个列表并将字符串项目添加到该列表中 然后我从列表中创建一个枚举器 当我用循环遍历列表时MoveNext 当我直接访问枚举器时 它会起作用 当我使用枚举器属性访问枚举器时 它不起作用 这MoveNext 命令不会增加索引
  • 将 OpenCV 与 Django 结合使用

    我想在我的 Django 应用程序中使用 OpenCV 由于 OpenCV 是一个库 我认为我们可以像任何其他库一样使用它 当我尝试使用导入它时import cv2在 Django 的视图中 它工作正常 但是当我尝试在 Django 视图中
  • 页面顶部固定浮动 div 中的 Bootstrap 警报

    我有一个使用 Bootstrap 的 Web 应用程序 2 3 2 公司政策 如果不对多个 Web 应用程序进行大量测试 我们就无法升级到 3 0 我们在此应用程序中有几个长页面需要验证表单和表格 然而 由于实用和美观的原因 我们需要在页面
  • 为什么 stripe Checkout 中没有帐单地址

    我正在使用 Stripe Checkout 进行信用卡收费 但我在弹出窗口中没有看到帐单地址 为什么他们不需要帐单地址 为什么 当我准备使用信用卡付款时 我访问的任何其他网站都会要求提供帐单地址 Stripe Checkout 中已弃用帐单
  • 以字符串形式访问对象属性并设置其值

    我有一个实例Account班级 每个帐户对象都有一个所有者 引用等 我访问帐户属性的一种方法是通过访问器 例如 account Reference 但我希望能够使用动态字符串选择器访问它 例如 account PropertyName 就像