Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
1 / 1 / 0
Регистрация: 13.05.2014
Сообщений: 66

Сериализация в Json экземпляра интерфейса

30.05.2016, 11:55. Показов 4733. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два класса, которые были наследование от интерфейса и класс в котором объявлена переменная типа интерфейса от которого наследуются два предыдущих класса.
Сделано это было ля того, что бы можно было передавать разные по структуре классы классы.
Думаю суть и логику вы уловили, буду благодарен за любую инфу.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
interface SomeInterface
{
}
class class1 : SomeInterface
{
   public string str1;
   public string str2;
   public string str3;
   public string str4;
}
class class2 : SomeInterface
{
   public int int1;
   public int int2;
   public int int3;
   public int int4;
}
 
class SomeClass
{
    public string strInfo;
    public SomeInterface SomeInterface1;
}
 
private void Method1()
{
    class1 cl = new class1{ str1 = "1", str1 = "2", str1 = "3", str1 = "4"};
    SomeClass sc = new SomeClass
    {
        strInfo = "123", SomeInterface1 = cl
    };
    string s =  Newtonsoft.Json.JsonConvert.SerializeObject(sc);
}
Естественно вылетает исключение которое пытается сказать что нельзя делать так с интерфейсами.
Вопрос: можно ли каким - то образом передавать разные классы через одну и ту же переменную?

Добавлено через 11 часов 45 минут
Это хотя бы возможно?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2016, 11:55
Ответы с готовыми решениями:

Сериализация интерфейса
здравствуйте. такое дело - у меня есть интерфейс (Interface) и от него наследуются два класса (Class1, Class2), создается список объектов...

Сериализация экземпляра типа FileInfo
Здравствуйте!Есть у меня необходимость записать в файл класс fileinfo а потом вычитать его подскажите плиз как это сделать ?

Создание экземпляра интерфейса Microsoft.Office.Interop.Excel
Добр. день Если сделать это: using Excel = Microsoft.Office.Interop.Excel; //Microsoft.Office.Interop.Excel.dll Excel.Application...

26
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
31.05.2016, 18:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от aquaMakc Посмотреть сообщение
Интерфейс предусматривает строгое соблюдение сигнатуры.
Применительно к контракту данных (и использовании его при передаче по сети) это не совсем так. Вспомните про эквивалентность контрактов данных и IExstensibleDataObject. На разных сторонах у нас вполне могут быть немного разные типы, а вот их канальное представление будет одинаковым. Интерфейс лишь обеспечит нам соблюдение определенных правил, что все объекты будут обладать минимумом членов. Но объекты могут содержать и что-то еще. Разве не так?
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
31.05.2016, 19:34
Цитата Сообщение от insite2012 Посмотреть сообщение
Но объекты могут содержать и что-то еще. Разве не так?
а эти объекты передадутся без атрибута [DataMember], для свойств не входящих в интерфейс?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
31.05.2016, 20:09
Цитата Сообщение от aquaMakc Посмотреть сообщение
эти объекты передадутся без атрибута [DataMember]
Естественно нет. Но, имея в параметре контракта операции интерфейс, мы можем передать туда любой класс, его реализующий. Разве не в этом заключается суть полиморфизма?
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
01.06.2016, 09:51
Цитата Сообщение от insite2012 Посмотреть сообщение
Естественно нет. Но, имея в параметре контракта операции интерфейс, мы можем передать туда любой класс, его реализующий. Разве не в этом заключается суть полиморфизма?
Цитата Сообщение от insite2012 Посмотреть сообщение
Интерфейс лишь обеспечит нам соблюдение определенных правил, что все объекты будут обладать минимумом членов. Но объекты могут содержать и что-то еще. Разве не так?
) практически пошаговая инструкция как прострелить себе ногу.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.06.2016, 10:16
Цитата Сообщение от aquaMakc Посмотреть сообщение
практически пошаговая инструкция как прострелить себе ногу.
С чего бы? Зачем тогда ввели эту возможность? Наверное, дураки в Ms сидят.
При надлежащем использовании это можно (и нужно, если таковы требования) применять. А прострелить ногу (и голову) можно и в более простых случаях.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
01.06.2016, 10:20
Цитата Сообщение от insite2012 Посмотреть сообщение
Наверное, дураки в Ms сидят.
В .Net довольно много спорных моментов. Разрабатывают его живые люди, которые могут где-то ошибиться, где-то не продумать до конца.
Лично я считаю, что строгая типизация данных и их однозначность - благо.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
01.06.2016, 10:24
Цитата Сообщение от aquaMakc Посмотреть сообщение
я считаю, что строгая типизация данных и их однозначность - благо.
Это так и есть. Но и про мощь полиморфизма забывать нельзя. Нужен баланс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2016, 10:24

Сериализация в JSON
Добрый день. Прошерстил доки по сериализации JSON, нагугли несколько библиотек, но так и не смог сериализовать свою структуру. ...

Сериализация JSON
Привет! Прошу помощи, не могу понять, как собрать Json обратно. В общем изначально я получаю данные в таком виде: { ...

Сериализация JSON
Здравствуйте! Допустим есть класс: public class Point2D { public double X, Y; private PluginStart Shell; public...

Сериализация JSON
Подскажите дураку как создать следующий JSON средствами QJsonArray QJsonObject QJsonDoument QJsonValue, не могу разобраться { ...

Сериализация JSON в C#
Доброго времени суток! Начал изучать сериализацию JSON и возникли некоторые недопонимания с моей стороны в плане изучения. Есть следующий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru