C#泛型类定义,类语法错误为Inrited

C#泛型类定义,类语法错误为Inrited,c#,generics,inheritance,syntax,constructor,C#,Generics,Inheritance,Syntax,Constructor,我已经研究了一些与定义继承基类的泛型类相关的问题,但没有看到这种情况。(如果我错过了,很抱歉。) 我的类是泛型类。它继承了一个具体的基类。基类的构造函数接受参数 如果消除通用规范,我可以使类定义正常工作,如下所示: public class DataItemType : DataItem { public DataItemType(string sNameArg, string sAddressArg, bool nWriteAllowedArg) : base(sNa

我已经研究了一些与定义继承基类的泛型类相关的问题,但没有看到这种情况。(如果我错过了,很抱歉。)

我的类是泛型类。它继承了一个具体的基类。基类的构造函数接受参数

如果消除通用规范,我可以使类定义正常工作,如下所示:

public class DataItemType : DataItem 
{
    public DataItemType(string sNameArg, string sAddressArg, bool nWriteAllowedArg)
        : base(sNameArg, sAddressArg, nWriteAllowedArg)
    {
    }
}
以下是通用规范的定义

public class DataItemType<TValue> : DataItem where TValue : struct
{
    public DataItemType<TValue>(string sNameArg, string sAddressArg, bool nWriteAllowedArg)
        : base(sNameArg, sAddressArg, nWriteAllowedArg)
    {
    }
}
public类DataItemType:DataItem,其中TValue:struct
{
公共数据项类型(字符串sNameArg、字符串sAddressArg、bool nWriteAllowedArg)
:基础(斯纳梅格、萨德勒萨格、nWriteAllowedArg)
{
}
}
在类定义行中,IDE抱怨没有给出与基类的必需形式参数sNameArg相对应的参数。IDE提供了创建构造函数的功能。但当它这样做时,语法就失败了。(插入的构造函数似乎也毫无意义。)

只需从泛型类的构造函数行中删除

public class DataItem
{
    public DataItem(string sNameArg, string sAddressArg, bool nWriteAllowedArg) {}
}

public class DataItemType<TValue> : DataItem where TValue : struct
{
    public DataItemType(string sNameArg, string sAddressArg, bool nWriteAllowedArg) 
        : base(sNameArg, sAddressArg, nWriteAllowedArg)
    {
    }
}
只需从泛型类的构造函数行中删除

public class DataItem
{
    public DataItem(string sNameArg, string sAddressArg, bool nWriteAllowedArg) {}
}

public class DataItemType<TValue> : DataItem where TValue : struct
{
    public DataItemType(string sNameArg, string sAddressArg, bool nWriteAllowedArg) 
        : base(sNameArg, sAddressArg, nWriteAllowedArg)
    {
    }
}

DataItemType
构造函数跳过
DataItemType
构造函数跳过
你是对的。我确实读过几次关于泛型类和泛型方法的页面。我将类定义中的泛型参数作为类名的一部分。构造函数必须与类具有相同的名称,因此我将泛型参数放在构造函数名称中。我在《在线编程指南》中没有看到任何东西可以纠正这种误解。我认为,C#规范在这一点上并不明显。@GregoryAshmore-我可以看出误解的来源:)很高兴你用我的回答解决了这个问题,你是对的。我确实读过几次关于泛型类和泛型方法的页面。我将类定义中的泛型参数作为类名的一部分。构造函数必须与类具有相同的名称,因此我将泛型参数放在构造函数名称中。我在《在线编程指南》中没有看到任何东西可以纠正这种误解。我认为C#规范在这一点上并不明显。@GregoryAshmore-我可以看出误解的来源:)很高兴你用我的答案解决了它