Cast структур.
От: xorix  
Дата: 16.11.15 22:40
Оценка:
Добрый день!
Подскажите пожалуйста есть ли какие-либо варианты реализации. Нужно реализовать следующую логику (ниже). В моем случае компилятор выдает ошибку, что и понятно.
Но непонятно как сделать так, чтоб эта логика работала. Важный момент, в моем случае я не могу переделать МyStruct1 на класс, это должна быть именно структура.

public interface IMessage
{
int GetMessageType();
}

struct MyStruct1 : IMessage
{
public int GetMessageType()
{
return 1;
}
}

struct MyStruct2 : IMessage
{
public int GetMessageType()
{
return 2;
}
}

public interface IObject
{
void OnReceive<T>(ref T message_) where T : IMessage;
}

class TestClass : IObject
{
public void OnReceive<T>(ref T message_) where T : IMessage
{
int type = message_.GetMessageType();
switch (type)
{
case 1: OnReceiveMessage(ref message_); break; // error CS1502: The best overloaded method match for 'Test.TestClass.OnReceiveMessage(ref Test.MyStruct1)' has some invalid arguments
}
}

public void OnReceiveMessage(ref MyStruct1 message_)
{
}
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.