gpt4 book ai didi

c# - 具有不同实现的通用基类中的属性

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

我有一个抽象类 CommandBase<T, X>我想拥有一个属性(property) 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 具有相同类型的实例,但我需要允许其他类型。

AddOrderitemCommand:

public class AddOrderitemCommand : CommandBase<AddOrderitemResult, AddOrderitemCommand>
{
(...)
}

可能包含一个 WebserviceCommand:

public class GetMenuCommand : CommandBase<GetMenuResult,GetMenuCommand>
{
(...)
}

请告知允许这样做的语法。

最佳答案

你基本上有三个选择:

  1. 使用dynamic作为该属性的类型。我什么都不会做。
  2. 使用object作为该属性的类型。我什么都不会做。
  3. 为命令创建非通用基类或接口(interface)。制作CommandBase<T, X>实现它并将其用作属性的类型。这就是我要走的路。

关于c# - 具有不同实现的通用基类中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16808801/

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