C# Назначение списка, который может изменить его тип позже?C#

Место общения программистов C#
Ответить
Anonymous
 C# Назначение списка, который может изменить его тип позже?

Сообщение Anonymous »

При настройке средства чтения Json у меня есть класс get-set в качестве основы для десериализации объектов в списки. Однако я столкнулся с проблемой: мне нужен один список, чтобы иметь возможность изменить его тип. Например:

Код: Выделить всё

public class SomewhereInAJsonSubLevel
{
public string name { get; set; }
public int num { get; set; }
public string method { get; set; }
public List content { get; set; }
}
Список имеет пользовательские типы и может варьироваться в зависимости от этого уровня. Проще говоря, это может быть INT, STRING или CUSTOM_CLASS. Очевидно, что каждый из них имеет разный макет списка.
Поскольку это JSON, мой опыт показывает, что тип списка задан как конкретный тип выше.
Теоретически , тип будет относиться к методу, поэтому возникает вопрос:
есть ли способ сохранить указанную выше структуру get-set, но при этом иметь способ выполнить "if имя метода" — X, затем содержимое списка, или, если тип метода — Y, List content"
Редактировать: Чтобы прояснить ситуацию, я не делаю Json Reader, я использую Json от NewtonSoft для сериализации/десериализации. Этот пример класса будет расположен где-то на несколько уровней глубже.
Я мог бы сделать одинаковые настройки для каждого отдельного типа списка, но это означало бы копирование всех уровней выше, просто чтобы изменить один из них. обозначения глубиной 5 или 6 слоев, поскольку тогда каждый слой придется менять для конкретного класса. Это много дублированного кода, которого я хочу избежать.
Поэтому я думаю, что то, что я искал, но не смог найти слова, - это своего рода полиморфизм, для один конкретный элемент, который будет отличаться от List в этом конкретном классе get-set.

Подробнее здесь: https://stackoverflow.com/questions/792 ... type-later
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»