как я могу создать механизм правил, который может выполнять определенные пользователем правила if else в C#.net

StackOverflow https://stackoverflow.com/questions/771843

  •  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top