0
これは非常に簡単な質問だと思います。しかし、多くの検索とテストの後、私はかなりの解決策を見つけられませんでした。ValueObjectをXMLとしてシリアライズ
ドメインごとに駆動されるデザインでは、強く型付けされた識別子クラスを作成しました。これは、検証に役立ち、誤って識別子を混ぜることがないためです。
だから私はそうのような単純な基底クラス作っ:そうのような
public abstract class UIDBase<T>
{
private readonly T _id;
protected UIDBase(T id)
{
_id = id;
}
public T ID
{
get { return _id; }
}
// Plus hash/equals implementation
}
とシンプルな実装:
public class SensorUID : UIDBase<string>
{
public SensorUID(string id) : base(id)
{
}
}
そして、私はそれを使用する:
public class SomeObject
{
public SensorUID SensorUID { get; set; }
public FileName FileName { get; set; }
}
しかし、今私はXMLとしてそれをシリアル化し、私はデフォルトのコンストラクタ(迷惑な)が必要です。しかし、悪いことに、プロパティはもはや属性としてシリアル化されません。
私はUIDBaseクラスにカスタムXmlシリアル化コードを追加したいだけです。属性を追加するか、またはインターフェイスを実装して、これらのクラスを属性としてシリアル化する必要があることをXMLシリアライザに伝えます。文字列/ int/longなどのように。
これらの値の型がそれを行うことができます、なぜ自分の値の型ですか?
XMLは次のようになります。
<SomeObject SensorUID="X" FileName="Y"/>
あなたは[このMSDNのドキュメント](https://msdn.microsoftを見て提案します.com/ja-us/library/83y7df3e(v = vs.110).aspx) – user957902
私はそれを調べます。私はSystem.stringが同じことを引き出す方法を知るために.netのソースコードに潜入していました。私はこの質問に自分自身で答えるかもしれません;) –
ドメインエンティティは無知な状態にしてください。あなたのエンティティはそうではありません。エンティティをXML(またはドメインエンティティを表すDTO)に正しく保持するのはリポジトリの責任です。 – jgauffin