delegate或event序列化的一个问题
2005-10-13 16:28
393 查看
有这样一个类:
<Serializable()> Public Class CustLabelProperty
Private m_iTop, m_iLeft As Integer
Private m_bSuspendPropertyChanged As Boolean
Public Delegate Sub PropertyChangedHandler()
Public Event PropertyChanged As PropertyChangedHandler
Public Sub SuspendPropertyChanged()
m_bSuspendPropertyChanged = True
End Sub
Public Sub ResumePropertyChanged()
m_bSuspendPropertyChanged = False
End Sub
Protected Sub OnPropertyChanged()
If Not m_bSuspendPropertyChanged Then
RaiseEvent PropertyChanged()
End If
End Sub
<Browsable(True), Description("左上角的Y坐标"), Category("显示")> Public Property Top() As Integer
Get
Return m_iTop
End Get
Set(ByVal Value As Integer)
m_iTop = Value
OnPropertyChanged()
End Set
End Property
<Browsable(True), Description("左上角的X坐标"), Category("显示")> Public Property Left() As Integer
Get
Return m_iLeft
End Get
Set(ByVal Value As Integer)
m_iLeft = Value
OnPropertyChanged()
End Set
End Property
End Class
假如我生成这样一个类:
Dim aCustLabelProperty As New CustLabelProperty
aCustLabelProperty.Left = 10
这时序列化是可以的,序列化代码如下:
Dim BFormatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Dim StreamFile As FileStream
StreamFile = New FileStream("d:\aaa.xxx", FileMode.Create)
With BFormatter
.FilterLevel = Runtime.Serialization.Formatters.TypeFilterLevel.Low
.AssemblyFormat = Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
.Serialize(StreamFile, aCustLabelProperty)
End With
StreamFile.Close()
但是生成CustLabelProperty后如果我加上一句:
AddHandler m_CustLabelProperty.PropertyChanged, AddressOf UpdateLabelProperty
即给PropertyChanged赋值了。 由于UpdateLabelProperty所在类是不可以序列化的,这时序列化就会出错,错误为
UpdateLabelProperty 所在的类未标记为可序列化。
但是<noserialize()>标记又不可以用于event域,不知道哪位高人指点下该怎么处理这样的情况。
<Serializable()> Public Class CustLabelProperty
Private m_iTop, m_iLeft As Integer
Private m_bSuspendPropertyChanged As Boolean
Public Delegate Sub PropertyChangedHandler()
Public Event PropertyChanged As PropertyChangedHandler
Public Sub SuspendPropertyChanged()
m_bSuspendPropertyChanged = True
End Sub
Public Sub ResumePropertyChanged()
m_bSuspendPropertyChanged = False
End Sub
Protected Sub OnPropertyChanged()
If Not m_bSuspendPropertyChanged Then
RaiseEvent PropertyChanged()
End If
End Sub
<Browsable(True), Description("左上角的Y坐标"), Category("显示")> Public Property Top() As Integer
Get
Return m_iTop
End Get
Set(ByVal Value As Integer)
m_iTop = Value
OnPropertyChanged()
End Set
End Property
<Browsable(True), Description("左上角的X坐标"), Category("显示")> Public Property Left() As Integer
Get
Return m_iLeft
End Get
Set(ByVal Value As Integer)
m_iLeft = Value
OnPropertyChanged()
End Set
End Property
End Class
假如我生成这样一个类:
Dim aCustLabelProperty As New CustLabelProperty
aCustLabelProperty.Left = 10
这时序列化是可以的,序列化代码如下:
Dim BFormatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Dim StreamFile As FileStream
StreamFile = New FileStream("d:\aaa.xxx", FileMode.Create)
With BFormatter
.FilterLevel = Runtime.Serialization.Formatters.TypeFilterLevel.Low
.AssemblyFormat = Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
.Serialize(StreamFile, aCustLabelProperty)
End With
StreamFile.Close()
但是生成CustLabelProperty后如果我加上一句:
AddHandler m_CustLabelProperty.PropertyChanged, AddressOf UpdateLabelProperty
即给PropertyChanged赋值了。 由于UpdateLabelProperty所在类是不可以序列化的,这时序列化就会出错,错误为
UpdateLabelProperty 所在的类未标记为可序列化。
但是<noserialize()>标记又不可以用于event域,不知道哪位高人指点下该怎么处理这样的情况。
相关文章推荐
- 一个很有意思的序列化崩溃问题 -- 简化问题找到根源
- Java序列化的一个问题
- fastjson反序列化一个字段有多个set方法时的问题
- 一个派生类序列化的问题
- 一个怪异的问题,时间序列化返回的问题
- 一个C#序列化时循环引用的问题
- unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放,
- 记录一个问题---php序列化一个数组保存到数据库中,读取之后反序列化出错
- Castle ActiveRecord 应用于 WebService (序列化) 的一个问题
- MongoDB中对象反序列化的一个小问题
- 使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
- Event/Delegate的一个不错实例
- 一个C#中使用 event 和 delegate的小例子。
- Hibernate3.1 的一个Event机制问题
- 数据绑定中的一个问题"pages enableEventValidation="true""
- UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"
- 记录一个关于在event receiver中执行页面跳转的问题
- Fastjson反序列化泛型类型时候的一个问题
- UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"
- [一个经典的多线程同步问题]解决方案二:Event事件