diff --git a/GFramework.Core/cqrs/command/AbstractCommandHandler.cs b/GFramework.Core/cqrs/command/AbstractCommandHandler.cs new file mode 100644 index 0000000..1cdd4e5 --- /dev/null +++ b/GFramework.Core/cqrs/command/AbstractCommandHandler.cs @@ -0,0 +1,55 @@ +// Copyright (c) 2026 GeWuYou +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using GFramework.Core.rule; +using Mediator; + +namespace GFramework.Core.cqrs.command; + +/// +/// 抽象命令处理器基类 +/// 继承自ContextAwareBase并实现ICommandHandler接口,为具体的命令处理器提供基础功能 +/// +/// 命令类型 +public abstract class AbstractCommandHandler : ContextAwareBase, ICommandHandler + where TCommand : ICommand +{ + /// + /// 处理指定的命令 + /// 由具体的命令处理器子类实现命令处理逻辑 + /// + /// 要处理的命令对象 + /// 取消令牌,用于取消操作 + /// 表示异步操作完成的ValueTask,返回Unit类型表示无返回值 + public abstract ValueTask Handle(TCommand command, CancellationToken cancellationToken); +} + +/// +/// 抽象命令处理器基类(带返回值版本) +/// 继承自ContextAwareBase并实现ICommandHandler接口,为具体的命令处理器提供基础功能 +/// 支持泛型命令和结果类型,实现CQRS模式中的命令处理 +/// +/// 命令类型,必须实现ICommand接口 +/// 命令执行结果类型 +public abstract class AbstractCommandHandler : ContextAwareBase, ICommandHandler + where TCommand : ICommand +{ + /// + /// 处理指定的命令并返回结果 + /// 由具体的命令处理器子类实现命令处理逻辑 + /// + /// 要处理的命令对象 + /// 取消令牌,用于取消操作 + /// 表示异步操作完成的ValueTask,包含命令执行结果 + public abstract ValueTask Handle(TCommand command, CancellationToken cancellationToken); +} \ No newline at end of file diff --git a/GFramework.Core/cqrs/notification/AbstractNotificationHandler.cs b/GFramework.Core/cqrs/notification/AbstractNotificationHandler.cs new file mode 100644 index 0000000..4060b8b --- /dev/null +++ b/GFramework.Core/cqrs/notification/AbstractNotificationHandler.cs @@ -0,0 +1,36 @@ +// Copyright (c) 2026 GeWuYou +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using GFramework.Core.rule; +using Mediator; + +namespace GFramework.Core.cqrs.notification; + +/// +/// 抽象通知处理器基类 +/// 继承自ContextAwareBase并实现INotificationHandler接口,为具体的通知处理器提供基础功能 +/// 用于处理CQRS模式中的通知消息,支持异步处理 +/// +/// 通知类型,必须实现INotification接口 +public abstract class AbstractNotificationHandler : ContextAwareBase, INotificationHandler + where TNotification : INotification +{ + /// + /// 处理指定的通知消息 + /// 由具体的通知处理器子类实现通知处理逻辑 + /// + /// 要处理的通知对象 + /// 取消令牌,用于取消操作 + /// 表示异步操作完成的ValueTask + public abstract ValueTask Handle(TNotification notification, CancellationToken cancellationToken); +} \ No newline at end of file diff --git a/GFramework.Core/cqrs/query/AbstractQueryHandler.cs b/GFramework.Core/cqrs/query/AbstractQueryHandler.cs new file mode 100644 index 0000000..296c985 --- /dev/null +++ b/GFramework.Core/cqrs/query/AbstractQueryHandler.cs @@ -0,0 +1,37 @@ +// Copyright (c) 2026 GeWuYou +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using GFramework.Core.rule; +using Mediator; + +namespace GFramework.Core.cqrs.query; + +/// +/// 抽象查询处理器基类 +/// 继承自ContextAwareBase并实现IQueryHandler接口,为具体的查询处理器提供基础功能 +/// 支持泛型查询和结果类型,实现CQRS模式中的查询处理 +/// +/// 查询类型,必须实现IQuery接口 +/// 查询结果类型 +public abstract class AbstractQueryHandler : ContextAwareBase, IQueryHandler + where TQuery : IQuery +{ + /// + /// 处理指定的查询并返回结果 + /// 由具体的查询处理器子类实现查询处理逻辑 + /// + /// 要处理的查询对象 + /// 取消令牌,用于取消操作 + /// 表示异步操作完成的ValueTask,包含查询结果 + public abstract ValueTask Handle(TQuery query, CancellationToken cancellationToken); +} \ No newline at end of file diff --git a/GFramework.Core/cqrs/request/AbstractRequestHandler.cs b/GFramework.Core/cqrs/request/AbstractRequestHandler.cs new file mode 100644 index 0000000..d2a15ac --- /dev/null +++ b/GFramework.Core/cqrs/request/AbstractRequestHandler.cs @@ -0,0 +1,52 @@ +// Copyright (c) 2026 GeWuYou +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using GFramework.Core.rule; +using Mediator; + +namespace GFramework.Core.cqrs.request; + +/// +/// 抽象请求处理器基类,用于处理不返回具体响应的请求 +/// 继承自ContextAwareBase并实现IRequestHandler接口 +/// +/// 请求类型,必须实现IRequest[Unit]接口 +public abstract class AbstractRequestHandler : ContextAwareBase, IRequestHandler + where TRequest : IRequest +{ + /// + /// 处理请求的核心方法 + /// + /// 要处理的请求对象 + /// 取消令牌,用于取消操作 + /// 表示异步操作的ValueTask,完成时返回Unit值 + public abstract ValueTask Handle(TRequest request, CancellationToken cancellationToken); +} + +/// +/// 抽象请求处理器基类,用于处理需要返回具体响应的请求 +/// 继承自ContextAwareBase并实现IRequestHandler接口 +/// +/// 请求类型,必须实现IRequest[TResponse]接口 +/// 响应类型 +public abstract class AbstractRequestHandler : ContextAwareBase, + IRequestHandler where TRequest : IRequest +{ + /// + /// 处理请求并返回响应的核心方法 + /// + /// 要处理的请求对象 + /// 取消令牌,用于取消操作 + /// 表示异步操作的ValueTask,完成时返回处理结果 + public abstract ValueTask Handle(TRequest request, CancellationToken cancellationToken); +} \ No newline at end of file