我已经阅读了很多这些问题,但我能理解并解决我的问题。
我试图进行通信转移和接收消息。
我在互联网上找到这段代码,但我无法编译它:
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;
一起使用答案 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