このメソッドを含むプロジェクトをコンパイルしようとしています。
public void Send<T>(object o) where T : struct {
BinaryWriter bw = new BinaryWriter(stream);
bw.Write((T)o);
}
私はこの方法からインスピレーションを得ました(作業中)。
public static T Cast<T>(object o) {
return (T)o;
}
BinaryWriter.Write関数はパラメーターのプリミティブ型をサポートしているので、そのように使用できると思いました。ただし、Visual Studioは、「'System.IO.BinaryWriter.Write(bool)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります」と述べています。
すべてのプリミティブ型を含む長いswitchステートメントを記述しないようにし、型を選択するためのパラメーターをメソッドに追加しようとしています。これは醜く、正しくないようです。
これはシンプルでエレガントです。
- Send <int>(123);
- Send <bool>(true);
しかし、なぜそれが機能しないのですか?そして、それを行う正しい方法は何ですか?