[C#] Вопрос из теста_2
От: XJess  
Дата: 03.10.10 15:41
Оценка:
Еще один вопрос из теста.

Что произойдет при Binary сериализации объекта widget?

public interface IWidget
{
    int Index
    {    get;
        set;
    }
}
[Serializable]
public class Widget : IWidget
{
    private int index;
    public int Index
    {    get { return index; }
        set { index = value; }
    }
}
// Метод Main()
IWidget widget = new Widget();
widget.Index = 10;
using (FileStream writer = new FileStream("data.dat", FileMode.Truncate))
{
    BinaryFormatter serializer = new BinaryFormatter ();
    serializer.Serialize(writer, widget);
}


1. Ошибка времени компиляции: для сериализации нужно использовать не StreamWriter, а только BinaryWriter
2. Ошибка времени исполнения: интерфейс IWidget должен быть помечен атрибутом Serializable
3. Ошибка времени исполнения: класс Widget должен быть помечен атрибутом BinarySerializable, а не Serializable
4. Будет вызвано исключение NotSupportedException с сообщением, что нельзя сериализовать интерфейс Iwidget
5. Объект widget будет успешно сериализован

Опять какая-то фигня — если на диске файла нет, то вылетает "Unhandled Exception: System.IO.FileNotFoundException: Could not find file
bin\Debug\data.dat'"... А в вопросе про существование ничего не сказано...

А если файл есть на диске, то вроде что-то пишется туда.. Вообщем, я так понимаю, верный вариант 5?
Re: [C#] Вопрос из теста_2
От: _FRED_ Черногория
Дата: 03.10.10 17:04
Оценка: 1 (1) +4
Здравствуйте, XJess, Вы писали:

XJ>Еще один вопрос из теста.

XJ>Что произойдет при Binary сериализации объекта widget?

XJ>1. Ошибка времени компиляции: для сериализации нужно использовать не StreamWriter, а только BinaryWriter


Компилятор не может проверить возможность или невозможность двоичной сериализации.

XJ>2. Ошибка времени исполнения: интерфейс IWidget должен быть помечен атрибутом Serializable


Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.

XJ>3. Ошибка времени исполнения: класс Widget должен быть помечен атрибутом BinarySerializable, а не Serializable


Нету такого атрибута, как BinarySerializable.

XJ>4. Будет вызвано исключение NotSupportedException с сообщением, что нельзя сериализовать интерфейс Iwidget


См. п. 2.

XJ>5. Объект widget будет успешно сериализован


А других вариантов и не остаётся

XJ>Опять какая-то фигня — если на диске файла нет, то вылетает "Unhandled Exception: System.IO.FileNotFoundException: Could not find file

XJ>bin\Debug\data.dat'"... А в вопросе про существование ничего не сказано...

Поэтому завязывайте с тестами. Читайте теорию. Пробуйте.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: [C#] Вопрос из теста_2
От: Lloyd Россия  
Дата: 06.10.10 10:32
Оценка:
Здравствуйте, _FRED_, Вы писали:

XJ>>2. Ошибка времени исполнения: интерфейс IWidget должен быть помечен атрибутом Serializable


_FR>Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.


Не только тип объекта имеет значение, но и базовые типы. Иначе получим SerializationException.
Re[3]: [C#] Вопрос из теста_2
От: _FRED_ Черногория
Дата: 06.10.10 10:38
Оценка:
Здравствуйте, Lloyd, Вы писали:

XJ>>>2. Ошибка времени исполнения: интерфейс IWidget должен быть помечен атрибутом Serializable


_FR>>Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.


L>Не только тип объекта имеет значение, но и базовые типы. Иначе получим SerializationException.


Ну и что? Базовые типы есть неотъемлемая чать некоего "конкретного" типа. Я нигде и не упомянул, что "только тип объекта имеет значение".
Help will always be given at Hogwarts to those who ask for it.
Re[4]: [C#] Вопрос из теста_2
От: Lloyd Россия  
Дата: 06.10.10 10:42
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>>>Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.


L>>Не только тип объекта имеет значение, но и базовые типы. Иначе получим SerializationException.


_FR>Ну и что? Базовые типы есть неотъемлемая чать некоего "конкретного" типа.


Так же как впрочем и реализуемые интерфейсы.

_FR>Я нигде и не упомянул, что "только тип объекта имеет значение".


"один единственный", "Он и имеет значение"
Re[5]: [C#] Вопрос из теста_2
От: _FRED_ Черногория
Дата: 06.10.10 10:56
Оценка:
Здравствуйте, Lloyd, Вы писали:

_FR>>>>Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.

L>>>Не только тип объекта имеет значение, но и базовые типы. Иначе получим SerializationException.
_FR>>Ну и что? Базовые типы есть неотъемлемая чать некоего "конкретного" типа.

L>Так же как впрочем и реализуемые интерфейсы.


А вот и нет.

_FR>>Я нигде и не упомянул, что "только тип объекта имеет значение".

L>"один единственный", "Он и имеет значение"

"один единственный" имеет отношение совсем к другому. А "имеет значение" ничего о "только" не говорит.

Меня, честно, раздражают ваши безсцысленные и необоснованные докапывания к словам — ничего, кроме повода позаниматься ерундой я за этим не вижу, поэтому не обижайтесь, если впредь я буду их игнорировать. Будет более полезно для форума, если вы ответите в следующий раз топикстартеру, указав ему на мои ошибки — то, как вы поняли (или не поняли) мои слова мне не интересно.
Help will always be given at Hogwarts to those who ask for it.
Re[6]: [C#] Вопрос из теста_2
От: Lloyd Россия  
Дата: 06.10.10 11:04
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Lloyd, Вы писали:


_FR>>>>>Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.

L>>>>Не только тип объекта имеет значение, но и базовые типы. Иначе получим SerializationException.
_FR>>>Ну и что? Базовые типы есть неотъемлемая чать некоего "конкретного" типа.

L>>Так же как впрочем и реализуемые интерфейсы.


_FR>А вот и нет.


Почему?

_FR>>>Я нигде и не упомянул, что "только тип объекта имеет значение".

L>>"один единственный", "Он и имеет значение"

_FR>"один единственный" имеет отношение совсем к другому. А "имеет значение" ничего о "только" не говорит.


_FR>Меня, честно, раздражают ваши безсцысленные и необоснованные докапывания к словам — ничего, кроме повода позаниматься ерундой я за этим не вижу, поэтому не обижайтесь, если впредь я буду их игнорировать. Будет более полезно для форума, если вы ответите в следующий раз топикстартеру, указав ему на мои ошибки — то, как вы поняли (или не поняли) мои слова мне не интересно.


Да расслабся, никакого докапывания, только уточнение твоих же слов. Я же не говорил, что ты не прав, просто тот, кто будет читать твой ответ может его неверно интерпретировать, как если бы только тип имеет значение, а это не так.
Re[7]: [C#] Вопрос из теста_2
От: _FRED_ Черногория
Дата: 06.10.10 11:18
Оценка:
Здравствуйте, Lloyd, Вы писали:

_FR>>>>>>Сериализуются не интерфейсы, а конкретные объекты, которые имеют конкретный (один единственный) тип. Он и имеет значение, а не реадизуемые интерфейсы.

L>>>>>Не только тип объекта имеет значение, но и базовые типы. Иначе получим SerializationException.
_FR>>>>Ну и что? Базовые типы есть неотъемлемая чать некоего "конкретного" типа.
L>>>Так же как впрочем и реализуемые интерфейсы.
_FR>>А вот и нет.

L>Почему?


Потому что один и тот же тип может реализовать несколько интерфейсов и даже по несколько раз, а вот базовый тип у каждого типа только один.

Сам интерфейс метода сериализации требует object, через который можно получить лишь одни единственный конкретный тип. Получит тип какого-то одного интерфейса (не зная, какого конкретно) нельзя.

L>Да расслабся, никакого докапывания, только уточнение твоих же слов.


Это я всегда с удовольствием только будь добр подробно излогать то, что именно требуется объяснить, что бы мне не приходилось гадать, что конкретно ты не понял, какую именно логическую связь я по ошибке пропустил или намеренно упустил для сокращения.
Help will always be given at Hogwarts to those who ask for it.
Re[8]: [C#] Вопрос из теста_2
От: Lloyd Россия  
Дата: 06.10.10 11:27
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>>>>>Ну и что? Базовые типы есть неотъемлемая чать некоего "конкретного" типа.

L>>>>Так же как впрочем и реализуемые интерфейсы.
_FR>>>А вот и нет.

L>>Почему?


_FR>Потому что один и тот же тип может реализовать несколько интерфейсов и даже по несколько раз, а вот базовый тип у каждого типа только один.


И что из упомянутого делает интерфейсы не-неотемлеиой частью типа. Продолжаю непонимать.

_FR>Сам интерфейс метода сериализации требует object, через который можно получить лишь одни единственный конкретный тип. Получит тип какого-то одного интерфейса (не зная, какого конкретно) нельзя.


Вообще-то можно, но ты опять сочтешь это докапыванием.

L>>Да расслабся, никакого докапывания, только уточнение твоих же слов.


_FR>Это я всегда с удовольствием только будь добр подробно излогать то, что именно требуется объяснить, что бы мне не приходилось гадать, что конкретно ты не понял, какую именно логическую связь я по ошибке пропустил или намеренно упустил для сокращения.


Кончай уже выкручиваться, ты не на экзаменах. Ты упустил важную часть, тебя поправили, скажи спасибо и проходи дальше. Незачем тратить ни свое, ни мое время.
Re[9]: [C#] Вопрос из теста_2
От: _FRED_ Черногория
Дата: 06.10.10 11:52
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Кончай уже выкручиваться, ты не на экзаменах. Ты упустил важную часть, тебя поправили,


Первое как-то со вторым слабо согласуется логически — не на экзаменах не "поправляют", а "дополняют".

Я намеренно обошёл вопрос того, как из типа объекта определяется, можно ли его сериализовать. Лишь сказал, что для определения факта возможности сериализации _необходимо_ знать тип объекта, а знания лишь типа интерфейса _не достаточно_. Как потом тип объекта используется, роли в данном случае не играет.

L>скажи спасибо и проходи дальше. Незачем тратить ни свое, ни мое время.


Ещё раз настоятельно прошу: отвечать сразу топикстартеру — это сбережёт и твоё и моё время. Я же свою сберегу тем, что не буду отвечать тебе
Help will always be given at Hogwarts to those who ask for it.
Re[10]: [C#] Вопрос из теста_2
От: Lloyd Россия  
Дата: 06.10.10 12:07
Оценка:
Здравствуйте, _FRED_, Вы писали:

L>>Кончай уже выкручиваться, ты не на экзаменах. Ты упустил важную часть, тебя поправили,


_FR>Первое как-то со вторым слабо согласуется логически — не на экзаменах не "поправляют", а "дополняют".


Бога ради, считай, что дополнили, я не против.

_FR>Я намеренно обошёл вопрос того, как из типа объекта определяется, можно ли его сериализовать.


Из типа объекта нельзя определить, можно ли его сериализовать, можно лишь определить, что сериализация невозможна. Но гарантии все равно не будет.

_FR>Лишь сказал, что для определения факта возможности сериализации _необходимо_ знать тип объекта, а знания лишь типа интерфейса _не достаточно_.


Не "не достаточно", а не нужно. Свосем не нужно.

_FR>Как потом тип объекта используется, роли в данном случае не играет.


L>>скажи спасибо и проходи дальше. Незачем тратить ни свое, ни мое время.


_FR>Ещё раз настоятельно прошу: отвечать сразу топикстартеру — это сбережёт и твоё и моё время.


Нет, мой пост относился к твоему ответу потому я и ответил на твой пост, а не на пост топикстартера. Не вижу причин, почему мне следовало бы отвечать топикстартеру.

_FR>Я же свою сберегу тем, что не буду отвечать тебе


Это гораздо более полезная стратегия поведения, чем то, как ты отвечаешь теперь. Одобряю.

P.S. Ответ на вопрос (И что из упомянутого делает интерфейсы не-неотемлеиой частью типа.) я видимо так и не получу?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.