Здравствуйте, Andrew-K-N, Вы писали:
AKN>Есть интерфейс
AKN>AKN>public interface ISerialize
А чем стандартный ISerializable не покатил?
AKN>есть класс, содержащий массив этой структуры,
AKN>и также реализующий интерфейс ISerialize
AKN>Вот пример кода
AKN> ((ISerialize)mass[i]).Read(br);// 1
AKN>в строке, помеченой 1, элемент массива после завершения метода остается
AKN>с нулевыми значениями, хотя метод Read в структуре считывает значения из потока
AKN>и присваивает их полям, но по возвращении - поля пустые (0 и null) :xz:
Все так и должно быть. Когда ты преобразовываешь структуру к ISerialize то происходит боксинг этой структуры и создание ее копии внутри бокс-класса. Поэтому чтение происходит в эту копию, которая затем просто пропадает. А в массиве остается старое значение. Помочь твоей беде можно например так
[c#]
ISerialize s = (ISerialize) mass[i]; //Получаем боксированную копию
s.Read(br); //Заполняем копию
mass[i] = s; //Делаем анбоксинг в массив
... << RSDN@Home 1.0 beta 6 (np: тихо) >>