首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NRules问题:超类上的规则匹配不起作用

NRules问题:超类上的规则匹配不起作用
EN

Stack Overflow用户
提问于 2020-05-22 20:02:54
回答 1查看 178关注 0票数 0

我有一个类C,它继承自A。现在我想写一个规则,它匹配类型A。所以我尝试了以下代码:

代码语言:javascript
复制
 public class tmp : Rule
{
    public override void Define()
    {
        A t = null;
        When().Match<A>(() => t);
        Then().Do(ctx => Console.WriteLine("test"));
    }
}

但这并不管用。有人能解释一下,我该如何解决这个问题吗?这不管用。

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 23:58:59

在父类上匹配肯定可以在NRules中工作。下面是一个完整的工作示例。

代码语言:javascript
复制
public class A
{ }

public class C : A
{ }

public class TestRule : Rule
{
    public override void Define()
    {
        A fact = null;

        When()
            .Match(() => fact);
        Then()
            .Do(x => Console.WriteLine("Test"));
    }
}

public class Program
{
    static void Main(string[] args)
    {
        var repo = new RuleRepository();
        repo.Load(x => x.From(xx => xx.AssemblyOf<Program>()));

        var factory = repo.Compile();
        var session = factory.CreateSession();

        session.Insert(new C());
        session.Fire();
    }
}

如果你发布了你的其余代码,我可以更新这个答案,并显示问题所在。可能您没有将事实插入到会话中,或者您没有调用Fire方法,或者您在编译会话工厂时没有包括规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61954624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档