跳到主要内容
版本:3.0

应用信使

定义

命名空间:TouchSocket.Core
程序集:TouchSocket.Core.dll

一、说明

应用信使是在进程内的,行使注册和触发功能的组件。可代替事件,可跨越程序集,可依赖倒置

二、注册

下列演示时,是使用AppMessenger.Default默认实例,实际上,用户可以自己新实例化的AppMessenger

2.1 注册实例

首先让类实例实现IMessageObject接口,然后在实例类中声明异步公共实例方法,并使用AppMessage特性标记。

然后一般情况下,建议在构造函数中,注册消息。

public class MessageObject : IMessageObject
{
public MessageObject()
{
AppMessenger.Default.Register(this);
}

[AppMessage]
public Task<int> Add(int a, int b)
{
return Task.FromResult(a + b);
}

[AppMessage]
public Task<int> Sub(int a, int b)
{
return Task.FromResult(a - b);
}
}
信息

对于实例类,如果构造函数中,没有注册消息,那么在构造函数之后,也可以使用其实例注册消息。

var messageObject = new MessageObject();
AppMessenger.Default.Register(messageObject);

2.1 注册静态方法

注册静态方法,只需在类中直接声明异步公共实例方法,并使用AppMessage特性标记即可。

public static class MessageObject : IMessageObject
{
[AppMessage]
public static Task<int> StaticAdd(int a, int b)
{
return Task.FromResult(a + b);
}
}

使用RegisterStatic进行注册

AppMessenger.Default.RegisterStatic<MessageObject>();

三、触发

触发时,泛型类型,即时返回值类型。

int add = await appMessenger.SendAsync<int>("Add", 20, 10);

int sub =await appMessenger.SendAsync<int>("Sub", 20, 10);