应用信使
定义
命名空间: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);