为了账号安全,请及时绑定邮箱和手机立即绑定

在运行时更改属性的参数

在运行时更改属性的参数

C#
波斯汪 2019-10-10 16:41:24
我不确定在运行时是否可以更改属性的参数?例如,在装配体内,我有以下课程public class UserInfo{    [Category("change me!")]    public int Age    {        get;        set;    }    [Category("change me!")]    public string Name    {        get;        set;    }}这是第三方供应商提供的类,我无法更改代码。但是现在我发现上面的描述是不正确的,并且当我将上述类的实例绑定到属性网格时,我想将“更改我”类别名称更改为其他名称。我可以知道该怎么做吗?
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

万一其他人走上这条路,答案是您可以通过反思来做到,除非您不能这样做,因为框架中存在错误。这是您的处理方式:


Dim prop As PropertyDescriptor = TypeDescriptor.GetProperties(GetType(UserInfo))("Age")

Dim att As CategoryAttribute = DirectCast(prop.Attributes(GetType(CategoryAttribute)), CategoryAttribute)

Dim cat As FieldInfo = att.GetType.GetField("categoryValue", BindingFlags.NonPublic Or BindingFlags.Instance)

cat.SetValue(att, "A better description")

一切都很好,只不过对所有属性(而不只是“年龄”)更改了category属性。


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 435 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信