C# 继承泛型类
我在dll中有一个类,如下所示C# 继承泛型类,c#,generics,inheritance,C#,Generics,Inheritance,我在dll中有一个类,如下所示 // Summary: // View component Builder base class. public abstract class WidgetBuilderBase<TViewComponent, TBuilder> : IHtmlString, IHideObjectMembers where TViewComponent : global::Kendo.Mvc.UI.WidgetBase
// Summary:
// View component Builder base class.
public abstract class WidgetBuilderBase<TViewComponent, TBuilder> : IHtmlString, IHideObjectMembers
where TViewComponent : global::Kendo.Mvc.UI.WidgetBase
where TBuilder : global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
{
}
//摘要:
//查看组件生成器基类。
公共抽象类WidgetBuilderBase:IHtmlString,IHideObjectMembers
其中TViewComponent:global::Kendo.Mvc.UI.WidgetBase
其中TBuilder:global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase
{
}
我想在我的下一个类中继承这个类
public abstract class WidgetBuilderBase<TViewComponent, TBuilder>
公共抽象类WidgetBuilderBase
我在网上冲浪,但大多数在网站上我没有得到满意的答案
其中大部分都说我们不能继承泛型类。为什么不能继承泛型类
我正在尝试执行以下代码
public abstract class WidgetBuilderBase<TViewComponent, TBuilder> : Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
{
}
公共抽象类WidgetBuilderBase:Kendo.Mvc.UI.Fluent.WidgetBuilderBase
{
}
但它给了我以下的错误
类型“TBuilder”不能用作中的类型参数“TBuilder”
泛型类型或方法
'Kendo.Mvc.UI.Fluent.WidgetBuilderBase'。
没有来自的装箱转换或类型参数转换
“TBuilder”到
'Kendo.Mvc.UI.Fluent.WidgetBuilderBase'
TViewComponent出现相同错误。如何解决这个问题…:(
关于继承泛型类的任何帮助?WidgetBuilderBase
对其类型参数有一些泛型约束:
where TViewComponent : global::Kendo.Mvc.UI.WidgetBase
where TBuilder : global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
其中TViewComponent:global::Kendo.Mvc.UI.WidgetBase
其中TBuilder:global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase
您不能声明子类,这可能会违反这些约束。因此,您也必须将它们应用于子类:
public abstract class WidgetBuilderBase<TViewComponent, TBuilder> : Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
where TViewComponent : global::Kendo.Mvc.UI.WidgetBase
where TBuilder : global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
{
}
公共抽象类WidgetBuilderBase:Kendo.Mvc.UI.Fluent.WidgetBuilderBase
其中TViewComponent:global::Kendo.Mvc.UI.WidgetBase
其中TBuilder:global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase
{
}
您应该像这样声明一个派生类:
public abstract class WidgetBuilderBase<TViewComponent, TBuilder>
: Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
where TViewComponent : global::Kendo.Mvc.UI.WidgetBase
where TBuilder : global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase<TViewComponent, TBuilder>
{
}
公共抽象类WidgetBuilderBase
:Kendo.Mvc.UI.Fluent.WidgetBuilderBase
其中TViewComponent:global::Kendo.Mvc.UI.WidgetBase
其中TBuilder:global::Kendo.Mvc.UI.Fluent.WidgetBuilderBase
{
}
您不能在派生类中重写基类泛型约束。您可能需要向派生类型添加相同的泛型约束…但我希望在运行时使其动态您希望动态什么?继承泛型类时,您还将继承其约束