作者:leedaning | 来源:互联网 | 2023-09-13 12:46
我有一个服务类,看起来像:
class BillingService
{
public void CheckBillingStatus(BillingOperationRequestDto dto)
{
}
public void AnotherOperationOnBillings(BillingOperationRequestDto dto)
{
}
}
我还有另一个类,它从RabbitMq监听一些队列.我想写一些类似的东西:
class MessageListener where T : BaseDto {
public void GetMessage(Func ... )
MessageListener(string queueToListen)
{
}
}
该代码背后的想法是,我想将其用作:
BillingService bs = new BillingService();
var listener = new MessageListener();
listener.GetMessage(bs.CheckBillingStatus);
我不仅要指定队列中期望的数据,还要指定对该数据调用哪种方法.这是正确的方法吗?我考虑过只从队列中获取一条消息,然后再将数据发送给另一类,但没有找到执行该方法的方法,因此决定循环运行GetMessage并指定出现消息时应执行的操作.
更新#1.1:
有没有办法将代表发送给
listener.GetMessage(bs.CheckBillingStatus);
如果我在BillingService类中的方法将具有不同的方法签名?例如,
public BillingStatusResult CheckBillingStatus(BillingOperationRequestDto dto)
{
}
public AnotherReturnValue AnotherOperationOnBilling(BillingOperationRequestDto dto, string requestedIp, TimeSpan period)
{
}
解决方法:
如@juharr所述,您可以使用通用委托(如果您需要从委托中检索结果,则可以使用Action类型).
您可以在this问题或documentation中找到更多信息
class MessageListener where T : BaseDto {
public void GetMessage(Action action)
{
}
MessageListener(string queueToListen)
{
}
}