Как пометить event атрибутом NonSerialized??

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Как пометить event атрибутом NonSerialized??

Сообщение Fedorfx » 20.10.2005 (Чт) 17:26

В шарпе есть така фича
[c#]
[field:NonSerialized]
public event MyDelegate Ev;
[/c#]

Но что то я никак не могу пометить свой эвент таким атрибутом.
Подскажите - как мне запретить серилизатору серилизовать евент.
А то если на евент подписался класс без атрибута - то выскакивает ошибка серилизации.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.10.2005 (Чт) 22:19

<NonSerializedAttribute>
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 20.10.2005 (Чт) 22:24

хех
еслиб так было просто.
Код: Выделить всё
<NonSerializedAttribute()> Public Event F1Changed As EventHandler

Error 21 Attribute 'NonSerializedAttribute' cannot be applied to 'F1Changed' because the attribute is not valid on this declaration type. C:\SATI\Code\Net\SYS\SYS\SYS\CLS\cls_Sys_Param.vb 23 6 SYS

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.10.2005 (Чт) 22:59

Так, что ли...

Код: Выделить всё
Imports System.Runtime.Serialization.Formatters.Soap

Module Module1

  Sub Main()
    Dim s As New SoapFormatter, st As New IO.MemoryStream
    Dim c As New test

    s.Serialize(st, c)
    st.Seek(0, IO.SeekOrigin.Begin)

    Dim tr As New IO.StreamReader(st)
    Console.WriteLine(tr.ReadToEnd())
    st.Close()
    Console.ReadLine()
  End Sub

End Module

<Serializable()> Public Class test
  Implements Runtime.Serialization.ISerializable

  Public Delegate Sub sdf(ByVal t As Integer)

  Public Event asdf As sdf

  Public i, j, k As Integer

  Public Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements System.Runtime.Serialization.ISerializable.GetObjectData
    info.AddValue("i", i)
    info.AddValue("j", j)
    info.AddValue("k", k)
  End Sub
End Class
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 20.10.2005 (Чт) 23:33

GSerg респект. Я и не сомневался.
Правда я сделал еще проще.
Заюзал XML серилизатор.
Он по умолчанию эвенты не пишет.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

    TopList