我有一个抽象类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>
实现它并将其用作属性的类型。我就是这么想的。