PropertyDescriptor
使用为方法返回值的 aIsReadOnly()
和与 a 关联的有什么区别ReadOnlyAttribute
?
问问题
2140 次
3 回答
5
主要区别在于,如果您提供自己的PropertyDescriptor
实现(通过或) ICustomTypeDescriptor
,这可以让您获得更多控制权。然后,您可以选择自己的可写逻辑 - 例如,基于访问权限。TypeDescriptionProvider
TypeConverter
但是,是的; 在默认实现下,它将为没有设置器的属性和标记为的属性报告只读ReadOnlyAttribute
。
于 2009-04-16T19:48:47.913 回答
3
当我使用反射器查看它时没有区别。
派生类 SimplePropertyDescriptor 之一具有以下代码。
public override bool IsReadOnly
{
get
{
return this.Attributes.Contains(ReadOnlyAttribute.Yes);
}
}
于 2009-04-16T18:09:10.133 回答
0
只是一个注释。
我花了一天时间为我的应用程序中的实体对象实现 ICustomTypeDescriptor,以便单独控制每个实体的只读状态。
因此,每个 PropertyDescriptor 实现都保留了对它来自的实体对象的引用,因此 IsReadOnly 属性是这样的:
public override bool IsReadOnly
{
get { return _owner.IsReadOnly;}
}
但是,当我运行代码时,BindingSource 组件从 ICustomTypeDescriptor 的 GetProperties() 方法中为集合中的每条记录读取一组 PropertyDescriptor,但是,当它检查 IsReadOnly 的值时,它只测试了从第一个获取的 PropertyDescriptor记录。
完全浪费时间!!!!
于 2013-02-04T23:55:32.900 回答