- PR -

ソケット通信でオブジェクトをやりとりしたい(C#)

1
投稿者投稿内容
TAKEZO
ベテラン
会議室デビュー日: 2003/12/25
投稿数: 59
投稿日時: 2004-08-17 15:56
ソケット通信でデータをやりとりするプログラムを作成することになったのですが、
文字列や、プリミティブな型ではなくオブジェクトそのものをやりとりしたいと
考えています。

JavaであればSerializableインターフェースを実装したオブジェクトであれば
ObjectOutputStream、ObjectInputStream等を利用して実現できるのですが、
C#で実現する方法はあるのでしょうか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-08-17 22:46
諸農です。

Javaのことは全然判りませんが、もしかすると
SoapFormatterかBinaryFormatterクラスが役に
立つかもしれません。
キーワードは「オブジェクトのシリアル化」等々です。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-08-18 00:10
C#では、ISerializbleインタフェースがJavaのSerializableインタフェースに
相当しますが、Serializable属性を使って書く方法もあります。
(クラス宣言部に[System.Attribute.Serializable]と書く)

(例)
[System.Attribute.Serializable]
class DataObject
{
  ...
}
あとはこのデータをJubeiさんの仰る通り、
BinaryFormatterやSoapFormatterを使って
Serialize()やDeserialize()すれば良いはずです。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-08-18 01:28
引用:

vincentさんの書き込み (2004-08-18 00:10) より:
C#では、ISerializbleインタフェースがJavaのSerializableインタフェースに
相当しますが、Serializable属性を使って書く方法もあります。
(クラス宣言部に[System.Attribute.Serializable]と書く)


念のため書いておくと、クラスを(BinaryFormatter等を使って)シリアライズできるようにするためには、必ずSerializable属性を適用する必要があります。
※「Serializable属性を使って書く方法もある」わけではありません。

ISerializableインターフェイスを実装するのは、シリアライズの方法を自分でカスタマイズする場合です。そして、その場合でもSerializable属性は必ず適用する必要があります。

--追記--
Serializable属性は、System.SerializableAttributeクラスですね。
属性を適用する場合は後ろのAttributeは省略できますので、
[System.SerializableAttribute]
[System.Serializable]
あるいはSystem名前空間をusingしていれば
[SerializableAttribute]
[Serializable]
などと書けます。

[ メッセージ編集済み 編集者: なちゃ 編集日時 2004-08-18 01:33 ]
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-08-18 07:32
なんだかものすごくいい加減なことを書いてしまいすいません。
(そもそも名前空間違うし、あとスペルも間違ってるし)

以前、(クラス名):ISerializable{...} で書いていって
できたような気がしたのですが、たぶん記憶違いですね。

次からは確認して書くようにします…。
TAKEZO
ベテラン
会議室デビュー日: 2003/12/25
投稿数: 59
投稿日時: 2004-08-18 09:29
ISerializableとBinaryFormatterというキーワードを元に
SDKドキュメントを確認したところ、ある程度方法が理解できました。
後は、試行錯誤で何とかなりそうです。有り難うございました。
1

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