我有一个抽象类CommandBase<T, X>想要有一个属性InnerCommand
但是由于InnerCommand可能有其他类型的t和x,而不是包含它的命令,我如何定义它?
抽象类:

public abstract class CommandBase<T, X>
    where T : CommandResultBase
    where X : CommandBase<T, X>
{
    public CommandBase<T, X> InnerCommand { get; set; }
    (...)
}

在上面的示例中,InnerCommand只接受t和x具有相同类型的实例,但我需要考虑其他类型。
addOrderitem命令:
public class AddOrderitemCommand : CommandBase<AddOrderitemResult, AddOrderitemCommand>
{
    (...)
}

可能包含WebServiceCommand:
public class GetMenuCommand : CommandBase<GetMenuResult,GetMenuCommand>
{
    (...)
}

请告知允许此操作的语法。

最佳答案

你基本上有三个选择:
使用dynamic作为该属性的类型。我什么也不会做。
使用object作为该属性的类型。我什么也不会做。
为命令创建非泛型基类或接口。使CommandBase<T, X>实现它并将其用作属性的类型。我就是这么想的。

07-26 01:59