我不确定在运行时是否可以更改属性的参数?例如,在装配体内,我有以下课程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属性。
- 3 回答
- 0 关注
- 435 浏览
添加回答
举报
0/150
提交
取消