错误非泛型类型' ...'不能与类型参数一起使用

时间:2017-04-27 13:29:58

标签: c# compiler-errors

我已经阅读了很多这些问题,但我能理解并解决我的问题。

我试图进行通信转移和接收消息。

我在互联网上找到这段代码,但我无法编译它:

Public class Mex<TRXStruct, TTXStruct> : IDisposable where TRXStruct: struct where TTXStruct: struct
{
    private SerializableQueue<RXMessage<TRXStruct, TTXStruct>> RX;
    private SerializableQueue<TXMessage<TRXStruct, TTXStruct>> TX;
}

[Serializable, StructLayout(LayoutKind.Sequential)]
protected struct RXMessage : IEquatable<Mex<TRXStruct, TTXStruct>.RXMessage> {..}

[Serializable, StructLayout(LayoutKind.Sequential)]
protected struct TXMessage : IEquatable<Mex<TRXStruct, TTXStruct>.TXMessage> {..}

在另一个cs文件中我有

public class SerializableQueue<T>{..}

出现这个错误代码,我无法编译,我无法理解是什么问题:

非泛型类型&#39; Mex.RXMessage&#39;不能与类型参数&#39;

一起使用

非泛型类型&#39; Mex.TXMessage&#39;不能与类型参数&#39;

一起使用

1 个答案:

答案 0 :(得分:1)

如果你看这里

protected struct RXMessage :

您将RXMessage定义为&#34; plain&#34;类型,没有通用的争论者

所以在你的Mex类里面你会定义一个像这样的属性

private SerializableQueue<RXMessage> RX;

而不喜欢这个

private SerializableQueue<RXMessage<TRXStruct, TTXStruct>> RX;

(请注意您应用的额外参数)。应用这些论点会表明你可以改变并换成不同的类型。如果这是你的意图,就必须像这样定义RXMessage

public class RXMessage<TRXStruct, TTXStruct> : IEquatable<Mex<TRXStruct, TTXStruct>.RXMessage> where TRXStruct: struct where TTXStruct: struct