指定された型 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);
}
}
}
一般的な値をキャストする可能性はありますか? または、バイトを取得する別の方法はありますか?