У меня есть общий класс, который сохраняет значение для указанного типа T. Значение может быть int, uint, double или float. Теперь я хочу получить байты значения для его кодирования в конкретный протокол. Поэтому я хочу использовать метод BitConverter.GetBytes(), но, к сожалению, Bitconverter не поддерживает общие типы или неопределенные объекты. Вот почему я хочу передать значение и вызвать конкретную перегрузку GetBytes(). Мой вопрос: как я могу использовать общее значение для int, double или float? Это не работает:
public class GenericClass<T>
where T : struct
{
T _value;
public void SetValue(T value)
{
this._value = value;
}
public byte[] GetBytes()
{
//int x = (int)this._value;
if(typeof(T) == typeof(int))
{
return BitConverter.GetBytes((int)this._value);
}
else if (typeof(T) == typeof(double))
{
return BitConverter.GetBytes((double)this._value);
}
else if (typeof(T) == typeof(float))
{
return BitConverter.GetBytes((float)this._value);
}
}
}
Есть ли возможность использовать общую стоимость? Или есть другой способ получить байты?