私は「新しい言語」(それほど野心的ではない) XML 定義に取り組んでいます。xml (シリアライズ/デシリアライズ) と API を同時に使用してオブジェクト グラフを操作するオプションが必要です。
public class Project
{
public List<Connection> Connections { get; set; }
public List<Table> Tables { get; set; }
/* Constructors and more.... */
}
public class Connection
{
public string Name { get; set; }
public string ConnectionString { get; set; }
/* Constructors and more.... */
}
public class Table
{
public string TableName { get; set; }
public Connection Conn { get; set; }
/* Constructors and more.... */
}
OK、次のようなものでこれをシリアライズ/デシリアライズしたい:
<Project>
<Connections>
<Connection Name="MyConnName" ConnectionString="My connection string"\>
<\Connections>
<Tables>
<Table TableName="MyTable" ConnectionName="MyConnName"\>
<\Tables>
<\Project>
ここには 2 つの問題があります。
このクラスには、接続クラスへの参照である「Conn」プロパティがありますが、「言語」(Xml シリアル化) では「ConnectionName」に名前が変更されています (純粋なオブジェクト参照 (クラス) との混乱を避けるために名前を変更したい)言語「名前による参照」 (Xml シリアル化)
ご覧のとおり、参照を保持したいのですが、「z.id ??」を含めません。preserveObjectReference が true に設定されている場合に DataContractSerializer が行うように、代わりに「名前」を使用したい (人間が読みやすい)
何か案は?