【发布时间】:2013-02-18 13:07:59
【问题描述】:
我想我已经很接近解决这个问题了,但我已经有一段时间没有取得进展了,除了四处打听之外别无选择。
我有一个带有大量图形属性的GraphicsSettings 类。这些属性有一个带有属性名称的占位符值,我将其用于比较循环。
比较循环是类内部的一个函数,位于图形属性数组和遍历外部文本文件中行的Stringreader 之间。
当循环发现图形属性的值与行中的一部分内容匹配时,我想将行的整个值设置到图形属性中。
但问题是,我不知道如何从类中调用属性设置器而不专门输入它的名称,因为它是一个循环,所以我不能这样做。
我尝试过使用:
this.GetType().GetProperty(key).SetValue(this,line, null);
其中“key”是属性名称,“line”是行值。据我了解,这在从外部调用类对象来设置值时应该可以正常工作,但似乎完全反对使用这种方法从内部调用类。
我得到的只是一个
TargetInvocationException was unhandled 错误。不太令人惊讶,但我不知道如何解决这个问题。
所以我想归根结底是:如何从属性所在的同一个类中通过使用字符串访问属性?
【问题讨论】:
-
我认为您需要发布一些代码,包括引发异常的行,因为这应该没有问题。
-
另外,
TargetInvocationException可能具有相当的欺骗性。请务必检查所有嵌套的 InnerException,因为它们很可能会让您更好地了解真正的根本原因。 -
假设
key实际上是属性名称(区分大小写)并且该行没有破坏任何类型边界(例如将null设置为int)。
标签: c# class dynamic properties