Обнаружение конфликтов свойств (меньше, больше и равно) - PullRequest
0 голосов
/ 07 мая 2020

Я начал думать о решении моей проблемы

Проблема: У меня есть вводимые пользователем данные, которые выглядят аналогично этому

"car": {
    "parts": [
        {
            "unit": "HorsePower"
            "operator": "greaterThan"
            "value": "250"
        },
        {
            "unit": "WheelSize"
            "operator": "equals"
            "value": "26"
        },
    ]
}

И я хочу найти возможные конфликты с другими автомобилями, имеющими такой же набор деталей

Вот несколько примеров, которые конфликтуют и не конфликтуют.

Operator - это Enum и может быть любым из этих [" betterThan "," lessThan "," equals "], если все части одинаковы или могут быть одинаковыми с меньшим или большим чем. Тогда возникает конфликт Примеры

"car": {
    "parts": [
        {
            "unit": "HorsePower"
            "operator": "greaterThan"
            "value": "250"
        },
        {
            "unit": "WheelSize"
            "operator": "equals"
            "value": "26"
        },
    ]
}

Конфликтует с

"car": {
    "parts": [
        {
            "unit": "HorsePower"
            "operator": "equals"
            "value": "260"
        },
        {
            "unit": "WheelSize"
            "operator": "equals"
            "value": "26"
        },
    ]
}

Но не с

"car": {
    "parts": [
        {
            "unit": "HorsePower"
            "operator": "lessThan"
            "value": "250"
        },
        {
            "unit": "WheelSize"
            "operator": "equals"
            "value": "26"
        },
    ]
}

У меня было logi c для этого раньше , когда не было ровных. Затем я создал ключи для всех модулей и добавил их в каталог

Вот один ключевой пример «HorsePowerEquals250WheelSizeEquals26». Затем он выдавал мне предупреждение, если была ошибка. Но этот лог c больше не работает, так как «HorsePowerEquals250WheelSizeEquals26» конфликтует с «HorsePowerGreaterThan200WheelSizeEquals26», но не дает мне предупреждения.

У меня есть некоторые решения, но я хочу услышать от вас раньше Я начинаю реализовывать вещи.

Все написано в C# классе

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

Изменить:
Одно из решений, которое я имел в виду: 1. Сделайте ключи только для всех единиц в списке деталей, например, «HorsePowerWheelSize», и добавьте их в словарь с помощью <string, List<Part>>

И затем l oop через этот словарь, где все части построены на одних и тех же модулях, и проверьте, не сталкиваются ли какие-либо из них

Пример

Foreach KeyPart в KeyPartsDictionary

затем => проверьте все детали по сравнению с остальными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...