在运行时更改属性的参数

我不确定在运行时是否可以更改属性的参数?例如,在装配体内,我有以下课程


public class UserInfo

{

    [Category("change me!")]

    public int Age

    {

        get;

        set;

    }

    [Category("change me!")]

    public string Name

    {

        get;

        set;

    }

}

这是第三方供应商提供的类,我无法更改代码。但是现在我发现上面的描述是不正确的,并且当我将上述类的实例绑定到属性网格时,我想将“更改我”类别名称更改为其他名称。


我可以知道该怎么做吗?


波斯汪
浏览 436回答 3
3回答

拉丁的传说

万一其他人走上这条路,答案是您可以通过反思来做到,除非您不能这样做,因为框架中存在错误。这是您的处理方式: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属性。
打开App,查看更多内容
随时随地看视频慕课网APP