动态删除属性的C#属性

Sys*_*min 10 .net c# propertygrid

我有一组具有一组属性的类如下所示.

class ContactInfo
{
    [ReadOnly(true)]
    [Category("Contact Info")]
    public string Mobile { get; set; }

    [Category("Contact Info")]
    public string Name{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

此类的对象被分配给属性网格,以便用户可以更新现有联系人.你可以看到Mobile被标记为ReadOnly.

但是,当我想添加一个全新的联系人时,我希望用户能够编辑联系人移动设备.为此,我需要在将对象分配给属性网格之前从Type中动态删除Readonly属性.可能吗?

and*_*ecu 8

您无法在运行时删除该属性,但可以使用反射将ReadOnly属性的ReadOnly私有支持字段更改为False.使它相当于[ReadOnly(false)]

有关详细信息,请参阅此文

http://codinglight.blogspot.com/2008/10/changing-attribute-parameters-at.html

编辑:固定链接

  • 答案中的链接已失效 - *“404 Not Found”*。 (4认同)
  • 链接已失效:( (2认同)