Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 继承泛型类_C#_Generics_Inheritance - Fatal编程技术网

C# 继承泛型类

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

我在dll中有一个类,如下所示

    // 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
{
}

您不能在派生类中重写基类泛型约束。

您可能需要向派生类型添加相同的泛型约束…但我希望在运行时使其动态您希望动态什么?继承泛型类时,您还将继承其约束