Передача указателя на общую структуру - PullRequest
2 голосов
/ 18 января 2012

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

0 голосов
/ 18 января 2012

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

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