【发布时间】:2020-04-09 05:09:09
【问题描述】:
我正在尝试编写一个通用函数,如下图示例。 这个想法是有一个方法可以接收一个泛型类型,该泛型类型必须继承一个抽象类,该抽象类具有一个泛型配置,该配置具有另一个抽象类。
public class MainCode
{
public MainCode()
{
Execute<DefaultOptions>();
}
public void Execute<T>() where T : BaseClassOptions<BaseClassConfiguration> { }
}
public class DefaultOptions : BaseClassOptions<DefaultConfiguration> { }
public abstract class BaseClassOptions<T> where T : BaseClassConfiguration
{
public T Config { get; set; }
}
public class DefaultConfiguration : BaseClassConfiguration { }
public abstract class BaseClassConfiguration
{
public string Host { get; set; }
}
但我收到以下错误:
你能帮帮我吗?
【问题讨论】:
-
请不要将代码发布为图片。
-
请不要将代码发布为图片。现在其他人不可能在搜索中找到它,或者只是将其复制粘贴到他们自己的 IDE 中进行尝试。请将您的代码作为代码块发布。
-
我总是很难理解为什么,当输入代码是按
ctrl-c,ctrl-v并发布屏幕截图(最简单的方法)涉及启动截图工具,创建一个截图然后执行@ 987654326@,点击按钮,等待上传,如果需要移动占位符等等......为什么人们会走更难的路...... -
在其他新闻中,你看到了吗? stackoverflow.com/questions/17434851/…
-
请查看 Caius Jard 发布的链接。那里的答案清楚地解释了为什么
BaseClassOptions<DefaultConfiguration>(这将是该示例中的Cage<Tiger>)不能用作BaseClassOptions<BaseClassConfiguration>(答案中的Cage<Animal>)。质疑你是否可以在没有接口的情况下做到这一点取决于你的代码实际上是如何工作的。如果您可以删除BaseClassConfiguration周围的通用BaseClassOptions<T>包装器并直接使用它,那么我认为它可能会起作用。但这取决于这是否可能。