- PR -

クラスの変更をせずにオブジェクトのコピー

投稿者投稿内容
KT工房
常連さん
会議室デビュー日: 2006/06/20
投稿数: 49
投稿日時: 2008-04-24 15:22
WindowsXP VB.Net2003 を使用しています。
オブジェクトのコピーを行いたいのですが、検索してみたところ
ICloneable を実装する方法と、メンバを全てコピーする方法に辿り着きました。
しかし、クラスの変更はNGのため ICloneable を実装するのは断念。
隠されているメンバもあるため、全てのメンバのコピーも無理でした。
他に方法は無いのでしょうか?
よろしくお願いします。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-24 15:29
次に思いつくのはリフレクションですが、お勧めできないですね。 クラスの変更が NG というのが良くわかりません。 受け渡し用のメソッドを 1 つ追加するだけですよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
KT工房
常連さん
会議室デビュー日: 2006/06/20
投稿数: 49
投稿日時: 2008-04-24 16:33
早速の返答ありがとうございます。
クラスの変更がNGの理由は、既に他システムで使用されているため
他システムへの影響度を考えてダメになりました。
確かに1つメソッドを追加するだけなのですが・・・。
リフレクションでできるのであれば教えていただきたいのですが。
よろしくお願いします。
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2008-04-24 17:02
そのクラスに Serializable 属性付いていたら幸せになれるんでしょうけど。。。

http://www.microsoft.com/japan/msdn/net/general/objserializ.aspx#objserializ_topic4
KT工房
常連さん
会議室デビュー日: 2006/06/20
投稿数: 49
投稿日時: 2008-04-24 17:11
強引にメモリごしのコピーを考えて調べていましたが、
残念なことに Serializable 属性も付いていませんでした。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-24 17:18
引用:

KT工房さんの書き込み (2008-04-24 16:33) より:

クラスの変更がNGの理由は、既に他システムで使用されているため
他システムへの影響度を考えてダメになりました。
確かに1つメソッドを追加するだけなのですが・・・。


追加で影響を及ぼすことはあり得ないですね。

引用:

リフレクションでできるのであれば教えていただきたいのですが。
よろしくお願いします。


方法さえ覚えてしまえば難しくないです。 方法については調べればゴマンと出てきますのでまずは調べてみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
KT工房
常連さん
会議室デビュー日: 2006/06/20
投稿数: 49
投稿日時: 2008-04-25 09:55
リフレクションを使用してディープコピーを行う方法を試してみたのですが、
こちらもクラス側の改造が必要になったため、オブジェクトのコピーは断念しました。
追加で影響を及ぼすことは無いのは私も同意見なのですが、なかなか難しいです・・・。
不本意ですが、コピーする予定だったクラスを継承したプライベートなクラスを作成して目的を達成することにします。
ありがとうございました。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2008-04-25 10:49
引用:

KT工房さんの書き込み (2008-04-25 09:55) より:
リフレクションを使用してディープコピーを行う方法を試してみたのですが、
こちらもクラス側の改造が必要になったため、オブジェクトのコピーは断念しました。


どのようなクラス側の改造が必要になったのですか?
_________________
C#と諸々

スキルアップ/キャリアアップ(JOB@IT)