1
8
可以使用反射,可以为get/set访问器获取一个MethodInfo对象并调用它的invoke方法。 代码示例假定您同时具有get和set访问器,如果要在生产代码中使用此访问器,则必须添加错误处理: 例如,要获取对象obj的属性foo的值,可以编写:
设置:
因此,您可以将obj.getType().getProperty(“foo”).getAccessors()[0]传递给您的方法并执行它的invoke方法。 一种更简单的方法是使用匿名方法(这将在.NET 2.0或更高版本中工作),让我们使用稍微修改过的代码版本示例:
对于作为类SomeClass一部分的int类型的名为foo的属性:
|
2
11
你也可以写一些像:
调用示例:
|
3
3
属性只是方法的语法糖。 我认为你不能修改一个属性,使它成为一个“你可以调用的getter”实体。 但是,您可以创建一个getPropertyValue()方法,并像传递委托一样传递它。 |
4
2
@德鲁尔帮手, 恐怕你不能那样做。编译器生成get-propertyname和set-propertyname方法,但不使用反射就无法访问这些方法。在我看来,你能做的最好的就是创造出 系统.反射.属性信息 和 对象系统 参数并返回propinfo.getvalue(obj,空); |
5
1
回复:Aku的回答: 然后你必须先获得那个财产信息。似乎“使用反射”是解决更困难的C问题的标准答案,但是反射产生的代码维护起来并不那么困难。Dror,为什么不创建一个为您读取属性的委托呢?这是一个简单的一行程序,可能是解决您的问题最快、最漂亮的方法。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |