为 ExternalAction 创建带有参数的 Contactor

问题描述

如何在代码效果中为 ExternalAction 创建 Contactor , 我有这个代码

 [ExternalAction(typeof(Service),"SendEmail")]

并且我想在成功评估时发送电子邮件但没有在 SendEmail 中编写发送代码,我想使用调用接口发送它,就像这样

    private readonly IEmailService email;
    public Service(IEmailService emailService)
    {
        email = emailService;
    }
 [Action("Send Email","Send Email to Someone")]
    public void SendEmail(Rule Rule,[Parameter(ValueInputType.User,Description = "Output message",DataSourceName = "UserList")] int userId)
    {
      email.sene(userId);
    }

解决方法

您正在尝试使用实例操作方法。为了让引擎能够调用这样的方法,它需要实例化您的类型。您的 Service 类没有空的(无参数/默认)构造函数。显然,引擎在评估时不会有您的 EmailService 实例。因此,它无法调用您的实例方法。要么向您的 Service 类添加一个默认构造函数,并找到另一种将 EmailService 传递给 Service 类的方法,要么使用带有值类型参数的静态方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...