内部型を一般的な名前/値ペアのリストに変換する必要があります。これは、新しいフィールドが追加された場合にスキーマの変更などを気にせずに、一般的/標準的な方法で多くの情報を送信できるようにするためです。私の問題は、一般的な構造をどのように設定するかです。
たとえば、フィールドの内部の束:
[Serializable]
public class Location
{
public string sAddress { get; set; }
public string sCity { get; set; }
public int iZipCode { get; set; }
}
次のように変換する必要があります。
<AttributeList>
<Attribute>
<Name>sAddress</Name>
<Value>123 ABC Street</Value>
<DataType>string</DataType>
</Attribute>
</AttributeList>
sCityとiZipCodeについて繰り返します。
一部のフィールド(iZipCodeなど)がインスタンス化されない可能性があるため、これを行うための最良の方法がわからないのは私だけです。
私が考えることができる唯一の方法は、内部データ構造内の特定の各フィールドを検索し、それがnullでないことを確認してから、実際の内部フィールド名を含む列挙型オブジェクト(または何か)からAttribute.Nameをマッピングすることです。 (sAddressのように)、次に値、次にタイプを設定します。具体的に探しているフィールドがどのタイプであるかがわかります。
これは、フィールドが3つしかない場合は問題ありませんが、それよりはるかに多くなり、新しいフィールドが追加されたかのように、コードを更新する必要があるかのように、悪いアプローチのように見えます。基本的に同じことをします。
理想的には、場所などの内部構造内のすべてを一般的に循環し、フィールドが存在するかどうかを自動的にチェックし、フィールドごとに特定のコードがなくても、フィールドの名前、値、タイプを取得できるものが必要です。
これが可能かどうかはわかりませんが、アドバイスをいただければ幸いです。