假设我有以下代码:
interface IWidget
{
}
interface IWidgetFactory<TWidget>
where TWidget : IWidget
{
}
TWidgetFactory CreateFactory<TWidgetFactory, TWidget>()
where TWidgetFactory : IWidgetFactory<TWidget>
where TWidget : IWidget
{
return ...
}
每当我打电话时CreateFactory()
,我必须同时传入 TWidgetFactory 和 TWidget 类型参数。这似乎没有必要,因为 TWidgetFactory 已经有一个约束,因此它的任何特化都必须已经指定 TWidget。有什么方法可以在调用时自动推断 TWidget CreateFactory()
,即使我必须为其添加某种额外的辅助方法?
(上面是一个简单的例子,但在实践中可能会变得更加复杂,所以这可以节省很多复杂性。)