相关疑难解决方法(0)

逆变?协方差?这个通用架构出了什么问题......?

我在设置命令处理架构时遇到了一些问题.我希望能够创建从ICommand派生的许多不同的命令; 然后,创建一些从ICommandHandler派生的不同命令处理程序;

这是我开始定义的接口和类:

interface ICommand {}

class CreateItemCommand : ICommand {}

interface ICommandHandler<TCommand> where TCommand : ICommand {
    void Handle(TCommand command);
}

class CreateItemCommandHandler : ICommandHandler<CreateItemCommand> {
    public void Handle(CreateItemCommand command) {
        // Handle the command here
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个辅助类,可以创建适当的命令类型:

class CommandResolver {
    ICommand GetCommand(Message message) {
        return new CreateItemCommand(); // Handle other commands here
    }
}
Run Code Online (Sandbox Code Playgroud)

并且,一个帮助类创建适当的处理程序; 这是我遇到麻烦的地方:

class CommandHandlerResolver {
    public ICommandHandler<TCommand> GetHandler<TCommand>(TCommand command) {

        // I'm using Ninject and have an instance of an IKernel 
        // The …
Run Code Online (Sandbox Code Playgroud)

c# architecture generics covariance contravariance

7
推荐指数
1
解决办法
443
查看次数

标签 统计

architecture ×1

c# ×1

contravariance ×1

covariance ×1

generics ×1