什么';这就是FactRetreiver和FactCreator之间的区别

本文关键字:FactCreator 之间 区别 FactRetreiver 什么 | 更新日期: 2023-09-27 18:00:27

这是FactCreator:的一个实例

public class MyFactCreator : IFactCreator
{
    private object[] myFacts;
    public MyFactCreator()
    {
    }
    public object[] CreateFacts ( RuleSetInfo rulesetInfo )
    {
        myFacts = new object[1];
        myFacts.SetValue(new MySampleBusinessObject(),0);
        return myFacts;
     }
     public Type[] GetFactTypes (RuleSetInfo rulesetInfo)
     {
         return null;
     }
 }

这是FactRetriever:的代码

public class MyFactRetriever:IFactRetriever
{
  public object UpdateFacts(RuleSetInfo rulesetInfo, Microsoft.RuleEngine.RuleEngine engine, object factsHandleIn)
  {
     object factsHandleOut;
     if (factsHandleIn == null) 
     {
        SqlDataAdapter dAdapt = new SqlDataAdapter();
        dAdapt.TableMappings.Add("Table", "CustInfo");
        SqlConnection conn = new SqlConnection("Initial Catalog=Northwind;Data Source=(local);Integrated Security=SSPI;");
        conn.Open();
        SqlCommand myCommand = new SqlCommand("SELECT * FROM CustInfo", conn);
        myCommand.CommandType = CommandType.Text;
        dAdapt.SelectCommand = myCommand;
        DataSet ds = new DataSet("Northwind");
        dAdapt.Fill(ds);
        TypedDataTable tdt = new TypedDataTable(ds.Tables["CustInfo"]);
        engine.Assert(tdt);
        factsHandleOut = tdt;
     }
     else
        factsHandleOut = factsHandleIn;
     return factsHandleOut;
  }

既然他们都为政策提供了一份事实清单,为什么他们不一样?它们之间有什么区别?

什么';这就是FactRetreiver和FactCreator之间的区别

FactCreater是专门为业务规则生成器提供的帮助类,当您在生成器中执行测试策略时,它使您能够断言短期非类型XmlDocument事实,例如.Net类的实例。它不在Composer之外使用。

事实检索器用于断言事实,称为长期,在幕后购买引擎。它在执行策略时使用,包括由Composer执行。

FactCreator实际上相当于编排中的调用规则形状的Composer,您可以在其中指定短期事实。