如何在PIESDK的插件式算法调用中获取结果

在我们开发系统时设计的功能不一定都可交给插件式算法计算完成,
有时我们需要获取其算法结果,再在其结果进行分析之后与用户之间进行交互,
有时我们需要获取其算法结果,再调用其他算法以增强我们代码的可读性和可维护性。

首先我们需完成插件式算法的调用,然后只需在输入参数中赋予我们想要的结果

namespace MyAlgo
{
public class myInfo
{
    public string InputInfos { get; set; }// 输入参数
    public object result { get; set; }// 返回结果
}
public class myAlgo : BaseSystemAlgo
{
    public myInfo info;
    //参数设置
    public override object Params
    {
        get { return info; }
        set { info = (myInfo)value; }
    }

    public override bool Execute()//算法逻辑实现
    {
        //在逻辑实现完成之后将结果赋值在info中
        info.result = (object)myresult;//myresult为通过此算法想输出的结果
        return true;
    }
  }
 }

那么在算法结束之后我们则可直接从中取回我们想要的结果了

        MyAlgo.myInfo info = new MyAlgo.myInfo();
        info.InputInfos = infos;//infos是算法所需参数
        ISystemAlgo algo = AlgoFactory.Instance().CreateAlgo("MyAlgo.dll", "MyAlgo.myAlgo");
        if (algo == null) return;
        algo.Params = info;
        //若为同步调用
        AlgoFactory.Instance().ExecuteAlgo(algo);
        object returnresult=info.result;//则直接获取其结果
        //若为异步调用
        AlgoFactory.Instance().AsynExecuteAlgo(algo);
        //ISystemAlgoEvents.OnExecuteCompleted+= (ISystemAlgo algo1) =>{
        //object returnresult=info.result;//则在完成事件中获取其结果
        //}

同理,输入的参数在算法逻辑实现过程中更改也可以获取其值。

posted @ 2020-11-07 11:06  邓发发  阅读(123)  评论(0)    收藏  举报