读取接口的属性值,即 int,但从属性名称开始作为字符串

Read property value of interface, that is an int, but starting from the property name as a string

提问人:another J.Doe 提问时间:11/17/2023 更新时间:11/17/2023 访问量:40

问:

我有一个名为 它的公共接口有一个名为 int 的属性API.Internals.IAccountNumber

我可以通过调用 Account.Number 轻松获取帐号,但我想要的是在给他一个字符串“Account.Number”时找到它的当前值。 我试图用它来称呼它:

MessageBox.Show(this.Account.GetType().GetField("Number").ToString());

但是我得到一个未设置为实例的对象引用。我觉得这很奇怪,因为我在一开始就明确表示了这一点。this.Account

有谁知道我做错了什么?

我已经阅读了一些界面指南,但我在获得这个低谷时遇到了一些麻烦

C# 接口 属性

评论

0赞 Charlieface 11/17/2023
请显示类和接口的定义。请注意,无论如何都不会为您提供当前值。ToString()
1赞 SomeBody 11/17/2023
使用代替 .GetPropertyGetField
0赞 another J.Doe 11/17/2023
事实上,是 get 字段不正确

答:

0赞 Dmitry Bychenko 11/17/2023 #1

您应该提供实例(在您的情况下)以从中读取属性并调用 。this.AccountGetValue

MessageBox.Show(this.Account.GetType()
  .GetProperty("Number")  // property, not field
  .GetValue(this.Account) // value of this.Account.Name
  .ToString());

评论

1赞 SomeBody 11/17/2023
Op 写入的是接口的实例,因此它不能有任何字段,并且始终返回 null。AccountGetField
0赞 Dmitry Bychenko 11/17/2023
@SomeBody:不错,谢谢! 是属性,而不是字段Number