AX 2012使用委托

AX2012加入了一个新的概念,delegate(委托),如果学习过.net的同志,对委托应该有很深刻的认识。

参照C#中委托的定义:委托是用来处理其他语言(如 C++、Pascal 和 Modula)需用函数指针来处理的情况的。不过与 C++ 函数 指针不同,委托是完全面对对象的;另外,C++ 指针仅指向成员函数,而委托同时封装了对象实例和方法。

参照C#中委托的作用:在C#中委托主要有三个作用,实现委托功能,实现回调函数功能,实现事件功能。具体的功能说明请参照vs的帮助文档。

当然说这么多主要目的是为了抛砖引玉,介绍一个委托是个什么东西,在AX2012当中,功能和用法都差不多。

现在我以一个简单的加减乘除的例子讲解委托在AX2012当中的用法。

首先,定义类CalculateDelegate

复制代码
//class  definition
class SalesTableTypeDelegate
{

}
//add method
public static void MyHandlerADD(int i,int j)
{
    ;
    info(int2str(i+j));
 }

//Divide
public static void MyHandlerDivide(int i,int j)
{
    info(int2str(i/j));
}

//Multiply
public static void MyHandlerMultiply(int i,int j)
{
    ;
    info(int2str(i*j));
}

//Subtract
public static void MyHandlerSubtract(int i,int j)
{
    info(int2str(i-j));
}
复制代码

如果不适用委托的话,我们需要同时调用这四个方法(加减乘除)我们就必须在main函数里分别的调用

复制代码
static void main(Args _args)
{

    CalculateDelegate s;
    ;

    CalculateDelegate::MyHandlerADD(2,3);
    CalculateDelegate::MyHandlerDivide(2,3);
    CalculateDelegate::MyHandlerMultiply(2,3);
    CalculateDelegate::MyHandlerSubtract(2,3);
}
复制代码

运行结果

如果使用委托的话

我们需要定义一个委托和执行委托的方法

复制代码
delegate void MyDelegate(int i,int j)
{

}
public void AddStaticHandler()
{
    ;

    this.MyDelegate += eventhandler(CalculateDelegate::MyHandlerMultiply);
    this.MyDelegate += eventhandler(CalculateDelegate::MyHandlerADD);
    this.MyDelegate += eventhandler(CalculateDelegate::MyHandlerDivide);
    this.MyDelegate += eventhandler(CalculateDelegate::MyHandlerSubtract);
  
}
static void main(Args _args)
{

    CalculateDelegate s;
    ;
    
    s = new CalculateDelegate();
    
    s.AddStaticHandler();
    s.MyDelegate(2,3);
}
复制代码

运行结果

 

posted @   adingkui  阅读(533)  评论(1编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
点击右上角即可分享
微信分享提示