Передача указателя на общую структуру
Я должен взаимодействовать с функцией 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);