Передача указателя на общую структуру

Я должен взаимодействовать с функцией 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)

Я попытался изменить тип параметра на "объект", а затем привести мои структуры к объекту, но это не сработало...

1 ответ

Решение

Как насчет дженериков?

delegate void SendNetMessageDelegate<TPayload>(uint messageCode, ref TPayload payload, uint messageSize); 
Другие вопросы по тегам