• Как десериализовать объект с учетом значения свойства?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    На SO уже есть похожий вопрос.

    В кратце, после десериализация Json объекта (словаря) смотришь на значение свойства и на его основании, обновляешь нужные поля.

    Код оттуда
    class MyItemConverter : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return typeof(ItemToSell).IsAssignableFrom(objectType);
        }
    
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject obj = JObject.Load(reader);
            string discriminator = (string)obj["ObjectType"];
    
            ItemToSell item;
            switch (discriminator)
            {
                case "apple":
                    item = new Apple();
                    break;
                case "books":
                    item = new Books();
                    break;
                case "melon":
                    item = new Melon();
                    break;
                default:
                    throw new NotImplementedException();
            }
    
            serializer.Populate(obj.CreateReader(), item);
    
            return item;
    
        }
    
    
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
    
        }
    }
    Ответ написан
    2 комментария
  • Как через powershell в фаерволле Windows включить предопределенное правило?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Подбирать имя с потолка не самый лучший вариант.
    Выведите список доступного с фильтром, например
    Get-NetFirewallRule -DisplayName "Remote Scheduled*" | Select DisplayName
    или
    Get-NetFirewallRule -DisplayName "Удаленное управление*" | Select DisplayName
    и дальше можете сделать типа
    Get-NetFirewallRule -DisplayName "Remote Scheduled Tasks Management (RPC)"
    Ответ написан
    Комментировать