- - PR -
クラスの変更をせずにオブジェクトのコピー
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-24 15:22
WindowsXP VB.Net2003 を使用しています。
オブジェクトのコピーを行いたいのですが、検索してみたところ ICloneable を実装する方法と、メンバを全てコピーする方法に辿り着きました。 しかし、クラスの変更はNGのため ICloneable を実装するのは断念。 隠されているメンバもあるため、全てのメンバのコピーも無理でした。 他に方法は無いのでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2008-04-24 15:29
次に思いつくのはリフレクションですが、お勧めできないですね。 クラスの変更が NG というのが良くわかりません。 受け渡し用のメソッドを 1 つ追加するだけですよね。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-04-24 16:33
早速の返答ありがとうございます。
クラスの変更がNGの理由は、既に他システムで使用されているため 他システムへの影響度を考えてダメになりました。 確かに1つメソッドを追加するだけなのですが・・・。 リフレクションでできるのであれば教えていただきたいのですが。 よろしくお願いします。 | ||||||||
|
投稿日時: 2008-04-24 17:02
そのクラスに Serializable 属性付いていたら幸せになれるんでしょうけど。。。
http://www.microsoft.com/japan/msdn/net/general/objserializ.aspx#objserializ_topic4 | ||||||||
|
投稿日時: 2008-04-24 17:11
強引にメモリごしのコピーを考えて調べていましたが、
残念なことに Serializable 属性も付いていませんでした。 | ||||||||
|
投稿日時: 2008-04-24 17:18
追加で影響を及ぼすことはあり得ないですね。
方法さえ覚えてしまえば難しくないです。 方法については調べればゴマンと出てきますのでまずは調べてみてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-04-25 09:55
リフレクションを使用してディープコピーを行う方法を試してみたのですが、
こちらもクラス側の改造が必要になったため、オブジェクトのコピーは断念しました。 追加で影響を及ぼすことは無いのは私も同意見なのですが、なかなか難しいです・・・。 不本意ですが、コピーする予定だったクラスを継承したプライベートなクラスを作成して目的を達成することにします。 ありがとうございました。 | ||||||||
|
投稿日時: 2008-04-25 10:49
どのようなクラス側の改造が必要になったのですか? _________________ C#と諸々 |
1|2|3
次のページへ»