将指针传递给通用结构

时间:2012-01-18 02:08:04

标签: c# c interop marshalling

我必须使用C#的C函数进行交互 该功能通过网络发送消息。

这是我在C#中的工作定义:

delegate void SendNetMessageDelegate(uint messageCode, ref MessageData messageData, uint messageSize);

并且MessageData的定义如下:

[StructLayout(LayoutKind.Sequential)]
internal struct MessageData { ... }
到目前为止,这些定义运作良好。

问题是有时我需要用另一个有效负载调用相同的函数。 这意味着我必须创建另一个带有“OtherMessageData”结构而不是“MessageData”的委托

所以我必须添加另一个SendNetMessageDelegate,它将另一个结构作为参考。

有更简单的方法吗? 所以我可以调用SendNetMessage(messageCode,ref AnyStructHere messageData,messageSize)

我尝试将参数类型更改为“object”,然后将我的结构转换为object,但这不起作用...

1 个答案:

答案 0 :(得分:0)

泛型怎么样

delegate void SendNetMessageDelegate<TPayload>(uint messageCode, ref TPayload payload, uint messageSize);