オブジェクトのシリアライズ

型付DataSetが使えない場合のことも考えて他の案も調査することに。S2Dao.NETを使った場合、Pureなクラスを扱うことになります。サーバー側のロジックを組む分には、こっちの方が都合が良いくらいなんですが、これをクライアントに返すときにが問題。型毎にWebMethodを用意したくないので、クライアント-サーバ間のやり取りはDataSetにしてしまうつもりです。なので、クラスからDataSet(XML)に変換する必要があります。
何も考えずに、SoapFormatterを使ってシリアライズ

IList list = UserDao.GetAllList ();
User[] users = new Users [list.Count];
list.CopyTo (users, 0);

SoapFormatter formatter = new SoapFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, users);
stream.Close();

しかし、

System.Runtime.Serialization.SerializationException: 
Soapリアライザでは、ジェネリック タイプ System.Nullable`1[System.Decimal] の
シリアル化がサポートされていません。

Nullableは駄目とのこと。

色々調べていたらXmlSerializerを発見。私はSystem.Xml名前空間ってほとんど知らないんですよね。(^^;

IList list = UserDao.GetAllList ();
User[] users = new Users [list.Count];
list.CopyTo (users, 0);

XmlSerializer xs = new XmlSerializer (users.GetType());
MemoryStream stream = new MemoryStream ();
xs.Serialize (stream, users);                        

DataSet dsUsers = new DataSet ();
stream.Seek (0, SeekOrigin.Begin);
dsUsers.ReadXml(stream);

stream.Close();

とりあえず、これで何とかなったっぽい。もうちょっと調べないと心配ですが・・・