
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.188] |
![]() |
|
Сообщ.
#1
,
|
|
|
![]() ![]() [Serializable] public class IPzag { public BitArray version = new BitArray(4);//номер версии 4 бита public BitArray header_length = new BitArray(4);//Длина заголовка 4 бита public BitArray toS = new BitArray(8);//тип сервиса 8 бит public ushort total_lenght;//Общая длина 16 бит public ushort identification;//Идентификатор пакета 16 бит public BitArray flag = new BitArray(3);//Флаги 3 бита public BitArray fragment_offset = new BitArray(13);//Смещение фрагмента 13 бит public byte ttl;//Время жизни 8 бит Time To Live public byte protocol;//Протокол верхнего уровня 8 бит public ushort checksum;//Контрольная сумма 16 бит public uint sourse_address;//айпишник источника 32 бита public uint destination_adress;//айпишник назначения 32 бита [DisplayName("Номер версии")] [XmlAttribute()] public BitArray Version { get { return version; } set { for (int i = 0; i < 4; i++) version[i] = Convert.ToBoolean(value); } } [DisplayName("Длина заголовка")] [XmlAttribute()] public BitArray Header_Length { get { return header_length; } set { for (int i = 0; i < 4; i++) header_length[i] = Convert.ToBoolean(value); } } [DisplayName("Тип сервиса")] [XmlAttribute()] public BitArray ToS { get { return toS; } set { for (int i = 0; i < 4; i++) toS[i] = Convert.ToBoolean(value); } } [DisplayName("Общая длина")] [XmlAttribute()] public ushort Total_lenght { get { return total_lenght; } set { total_lenght = value; } } [DisplayName("Идентификатор пакета")] [XmlAttribute()] public ushort Identification { get { return identification; } set { identification = value; } } [DisplayName("Время жизни")] [XmlAttribute()] public byte TTL { get { return ttl; } set { ttl = value; } } [DisplayName("IP-Протокол верхнего уровня")] [XmlAttribute()] public byte Protocol { get { return protocol; } set { protocol = value; } } [DisplayName("Контрольная сумма")] [XmlAttribute()] public ushort Checksum { get { return checksum; } set { checksum = value; } } [DisplayName("IP-адрес источника")] [XmlAttribute()] public uint Sourse_address { get { return sourse_address; } set { sourse_address = value; } } [DisplayName("IP-адрес назначения")] [XmlAttribute()] public uint Destination_adress { get { return destination_adress; } set { destination_adress = value; } } [DisplayName("Флаги")] [XmlAttribute()] public BitArray Flag { get { return flag; } set { for (int i = 0; i < 4; i++) fragment_offset[i] = Convert.ToBoolean(value); } } [DisplayName("Смещение фрагмента")] [XmlAttribute()] public BitArray Fragment_offset { get { return fragment_offset; } set { for (int i = 0; i < 4; i++) fragment_offset[i] = Convert.ToBoolean(value); } } public IPzag() { } } Сериализую собственно так: ![]() ![]() StreamWriter str = new StreamWriter("C://IP.xml"); XmlSerializer slz = new XmlSerializer(packet.GetType()); slz.Serialize(str, packet, new XmlSerializerNamespaces(new[] { new XmlQualifiedName("") })); str.Close(); Вылетает ощибка : Дополнительные сведения: Возникла ошибка при отражении типа "IP_протокол.Form1.IPzag". Помогите кто чем может,не могу понять в чем дело,не однократно делал сериализацию а тут что то не идет ![]() |
Сообщ.
#2
,
|
|
|
заремарьте все атрибуты "[XmlAttribute()]" и попробуйте.
Исчезнет ли ошибка? |
Сообщ.
#3
,
|
|
|
попробовал,не работает...
![]() |
Сообщ.
#4
,
|
|
|
Цитата lenferer @ Вылетает ощибка : Дополнительные сведения: Возникла ошибка при отражении типа "IP_протокол.Form1.IPzag". Помогите кто чем может,не могу понять в чем дело,не однократно делал сериализацию а тут что то не идет Уберите вот этот конструктор (он все равно ничего не делает): ![]() ![]() public IPzag() { } Добавлено Не поможет, проблема в сериализации BitArray, не нравится эта коллекция сериализатору. ![]() Добавлено Быстрый способ это поправить - сделать из BitArray просто Аrray. Не знаю подойдет ли это Вам. |
Сообщ.
#5
,
|
|
|
Цитата Vladimir @ Цитата lenferer @ Вылетает ощибка : Дополнительные сведения: Возникла ошибка при отражении типа "IP_протокол.Form1.IPzag". Помогите кто чем может,не могу понять в чем дело,не однократно делал сериализацию а тут что то не идет Уберите вот этот конструктор (он все равно ничего не делает): ![]() ![]() public IPzag() { } Добавлено Не поможет, проблема в сериализации BitArray, не нравится эта коллекция сериализатору. ![]() Добавлено Быстрый способ это поправить - сделать из BitArray просто Аrray. Не знаю подойдет ли это Вам. Пробовал его убирать,все также не работает.Он необходим для сериализации-так пишут на многих форумах.я Тоже подозреваю что проблема в BitArray, но просто Array мне не подойдет,у кого то есть еще мысли по этому поводу.... ![]() |
Сообщ.
#6
,
|
|
|
Выкидываете все свойства смотрите сериализует или нет, потом добавляете по одному, как ломанется - думаете.
|
![]() |
|
|
Цитата SPM @ Выкидываете все свойства смотрите сериализует или нет, потом добавляете по одному, как ломанется - думаете. Попробовал,как и ожидалось при добавление BitArray не сериализует...неужели нет способа сериализовать BitArray??? ![]() |
Сообщ.
#8
,
|
|
|
BitArray ващето сериализуемый. Смотрите как вы его инициализируете, там микрософт что-то про это намекало. поищите по инету, не думаю что ничего нет.
|
Сообщ.
#9
,
|
|
|
Цитата SPM @ BitArray ващето сериализуемый. Эта коллекция ВЫГЛЯДИТ как-будто она сериализуется, но на практике выдает фокусы. Добавлено P.S. Уточню, фокусы случаются при ХML сериализации. ![]() Добавлено Цитата lenferer @ ...неужели нет способа сериализовать BitArray??? Есть: бинарным сериалайзером. ![]() XML вроде не очень сложный, сам ХМL документ где-то используется? |
Сообщ.
#10
,
|
|
|
Мда действительно хитрый он. Ну тогда надо что-то придумывать... как пример делать их не сериализуемыми, а сериализуемыми делать свойства-массивы и как-то хитро гонять между ними. Либо свой BitArray расписать. Либо внедрятся в процесс сериалайза/десериалайза.
|
![]() |
|
|
Цитата Vladimir @ XML вроде не очень сложный, сам ХМL документ где-то используется? Да, в дальнейшем необходимо другой программой десериализовать XML файл в экземпляр точно такого же класса...Или загружать все в Память а потом второй программой считывать из памяти....думаю это еще сложнее будет реализовать... Народ,мно кто подскажет еще или идеи кончились???????? ![]() |