c# - 将指针传递给通用结构

标签 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”的委托(delegate)

所以我必须添加另一个 SendNetMessageDelegate 以另一个结构作为引用。

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

我尝试将参数类型更改为“对象”,然后将我的结构转换为对象,但这没有用...

最佳答案

泛型怎么样

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

关于c# - 将指针传递给通用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8904277/

相关文章:

字符数组和二维数组指针问题

c - C传递结构作为函数参数

c# - 我如何知道给定的 .NET 程序集面向哪个平台?

c# - 打开模板文件的多个副本(.Net、Excel.Interop)

c# - 检查 lambda 表达式中的属性是否为 null

c# - 使用 C# 从 Wikipedia 读取表格(内容)

c# - 带 CAS 的 OWIN 中间件

c# - 如何将参数从 excel post 传递到 Controller 操作

c - 使用 difftime for 循环参数

c# - 使用后期绑定(bind)创建和填充 Excel 工作表