首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

不解 DesignerSerializationVisibility 枚举

2013-06-19 
疑惑 DesignerSerializationVisibility 枚举对这个DesignerSerializationVisibility感到很疑惑。官方解释是

疑惑 DesignerSerializationVisibility 枚举
对这个DesignerSerializationVisibility感到很疑惑。
官方解释是这样的:指定属性对设计时序列化程序所具有的可见性。
没有 DesignerSerializationVisibilityAttribute 的成员将被视为具有值为 Visible 的DesignerSerializationVisibilityAttribute。
如果可能,序列化程序会将标记为 Visible 的属性 (Property) 值序列化为该类型。要为特定类型或属性 (Property) 指定自定义序列化,请使用 DesignerSerializerAttribute。



 成员名称     说明 
 Hidden 代码生成器不生成对象的代码。 
 Visible 代码生成器生成对象的代码。 
 Content 代码生成器产生对象内容的代码,而不是对象本身的代码。 

疑惑:
(1)Hidden 代码生成器不生成“对象的代码”?本身就是属性,生成什么对象的代码
(2)Visible 代码生成器生成"对象的代码"?本身就是属性,生成什么对象的代码
(3)Content 代码生成器产生"对象内容的代码",而不是"对象本身的代码"? 
(4)要为特定类型或属性 (Property) 指定自定义序列化,请使用 DesignerSerializerAttribute?

[解决办法]
如果
有些属性在设计时赋值没有意义(某属性是计算而来, 运行时特定, 等等, 总有理由),

那么,
  Hidden 则不会序列化, 对应到 code dom 序列化器, 就是不在 *.Desinger.cs 中生成这个属性的赋值语句.

  Visible 的是需要序列化的, 是否真的序列化, 还要看属性值是否是默认值,
只序列化值为非默认值的的属性.

引用
  设计时序列化, 目的就是记住当时的状态,
记住的方式不同, 就需要不同的序列化器, 

热点排行