У меня есть серия классов, каждый из которых построен для определенного типа (Byte
, UInt16
, Double
и т. Д .; каждый определяется как TypeCode
).Каждый класс имеет почти одинаковый код, но делает некоторые приведения к его определенному типу.Примечание: есть член класса, определенный как: void* _baseAddress;
и ClassX* _table;
Упрощенный пример метода:
public unsafe UInt16 GetValue(int x)
{
return *((UInt16*) _baseAddress + (_table+ x)->entry);
}
Я хочу, предполагая, что у меня есть член класса с именем MyType
который определяется typeof(inputType)
, для этого:
public unsafe object GetValue(int x)
{
return *((MyType*) _baseAddress + (_table+ x)->entry);
}
Это явно не работает.Я пытался прочитать об использовании Func
и delegates
, но продолжал бить стену, в которой пустота * не может быть преобразована так, как я хочу.
Потому что я думаю, что это добавляет контекст.Это пытается получить значение в данном месте.У меня есть метод зеркалирования, который должен иметь:
*((MyType*) _baseAddress + (_table + x)->XEntry ) = inputValue;
Примечание: производительность важна.Я не могу выделить новую память, и при этом не могу сжечь кучу процессорного времени на преобразования