как я могу создать механизм правил, который может выполнять определенные пользователем правила if else в C#.net
-
12-09-2019 - |
Вопрос
У меня есть требование создать новый механизм правил, в котором у меня есть подобное правило, которое хранится на листе Excel в табличном формате.
<If> "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"
У меня есть два файла с надписью 1 n 2.мне нужно увидеть в первом файле, является ли имя Nita или Gita.На основе выполнения я получу значение.Теперь это результирующее значение мне нужно сравнить со вторым файлом , который является xml - файлом и путь к которому был определен .
кто-нибудь может подсказать мне, есть ли в C # что-нибудь, что я мог бы эффективно использовать для разработки того же самого,, или кто-нибудь может подсказать мне, как я могу достичь этого с помощью C #..мне нужна какая-то идея для такого же дизайна класса.
Я использую .Net 1.1.
Решение
Во-первых, вам нужно создать классы, которые могут определять ваши правила.Как только у вас будет эта структура на месте, вы сможете создать движок, который использует эти классы.
Я бы посмотрел на создание чего-то вроде:
class RuleEngine
{
public RuleMatch[] RuleMatches { get; set; }
public void RunEngine(inputdata...)
{
// do processing in here
}
}
class RuleMatch
{
public Rule[] Rules { get; set; }
public Object ValueIfMatched { get; set; }
}
class Rule
{
public String FieldName { get; set; }
public MatchType Match { get; set; }
public Object Value { get; set; }
)
enum MatchType
{
Equal = 1,
NotEqual = 2,
GreaterThan = 4,
LessThan = 8,
Like = 16
}
Тогда продолжайте с этого момента....
Эта структура была бы лучше, если бы она была изменена, чтобы иметь группу правил, которые можно было бы добавить к группе правил, например (a И b) ИЛИ (c И d) - я пока оставляю это вам на обдумывание.
Пожалуйста, обратите внимание, что я использую здесь некоторые конструкции C # 3.0, вам нужно будет создать полные частные свойства в 1.1.
Другие советы
Вы могли бы создать DSL с помощью boo, но я не знаю, будет ли это работать с 1.1
Вы будете очень ограничены .NET 1.1.Я думаю, что вашим первым шагом будет обновление.
Последующие шаги могут включать механизм правил, встроенный в Windows Workflow Foundation;этот движок и связанные с ним графические дизайнеры были разработаны для использования за пределами WF.
Еще одна вещь, на которую следует обратить внимание, - это блок приложения проверки, который является частью Корпоративная библиотека Microsoft.
Ничего из этого не существовало шесть лет назад, когда .NET 1.1 правил Землей.
Или вы могли бы просто позволить кому-то другому выполнить эту работу и использовать хороший .Механизм сетевых правил, такой как продукт InRule Technology, IBM / ILOG Rules for .Net или Blaze Advisor для .Net.Они хорошо работают и предоставят вам мощную среду правил в .Net