gpt4 book ai didi

c# - 为值和引用类型定义通用接口(interface)类型约束

转载 作者:太空狗 更新时间:2023-10-29 21:58:27 25 4
gpt4 key购买 nike

我在让这个通用约束起作用时遇到了一些麻烦。

下面有两个接口(interface)。

我希望能够将 ICommandHandlers TResult 类型限制为仅使用实现 ICommandResult 的类型,但 ICommandResult 有自己的约束需要提供。 ICommandResult 可能会从其 Result 属性返回一个值或引用类型。我错过了一些明显的东西吗?谢谢。

public interface ICommandResult<out TResult>
{
TResult Result { get; }
}

public interface ICommandHandler<in TCommand, TResult> where TCommand : ICommand
where TResult : ICommandResult<????>
{
TResult Execute( TCommand command );
}

最佳答案

你可以把你的界面改成这样(对我来说看起来更干净):

public interface ICommandHandler<in TCommand, TResult> where TCommand : ICommand
{
ICommandResult<TResult> Execute( TCommand command );
}

或者您可以添加 ICommandResult<TResult> 的类型参数到您的通用参数列表:

public interface ICommandHandler<in TCommand, TCommandResult, TResult> 
where TCommand : ICommand
where TCommandResult: ICommandResult<TResult>
{
TCommandResult Execute( TCommand command );
}

关于c# - 为值和引用类型定义通用接口(interface)类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15474023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com