メソッド GetData() が Type のパラメーターを必要とする理由がわかりません。Type は、オブジェクトがどのクラス/タイプであるべきかを指定するものだと思いました。GraphicsPathWrap という構造があり、ISerializable を実装することでシリアライズ可能になります。次のコピー機能を試しました。
private void Copy(GraphicsPathWrap gpw){
DataObject obj = new DataObject();
obj.SetData(typeof(GraphicsPathWrap), gpw);
Clipboard.SetDataObject(obj);
}
次に、次の貼り付け機能を試しました。
private GraphicsPathWrap Paste()
{
return (GraphicsPathWrap)Clipboard.GetDataObject().GetData(typeof (GraphicsPathWrap));
}
動作するはずですが、GetData(...) は MemoryStream 型のオブジェクトを返し、InvalidCastException がスローされました。なぜそれがMemoryStreamのタイプなのかわかりません。GraphicsPathWrap にキャストできるはずだと思いましたか? BinaryFormatter を使用して MemoryStream を逆シリアル化することでこれを回避できますが、クリップボードがすべてのことを実行できない場合はばかげていますか?
ありがとう!