大規模で複雑なクラスで構成されるデータ モデルがあります。ここでは、次の例 (モデルの最小クラスの 1 つ) でクラスの一般的な構造を確認できます。
[DataContract(IsReference = true)]
public partial class Name : PresentationBase
{
[DataMember]
private SmartProperty<string> _first;
public SmartProperty<string> First
{
get { return this._first ?? (this._first = new SmartProperty<string>()); }
set
{
bool isModified = false;
if (this._first == null)
{
if (value != null)
{
isModified = true;
}
}
else if (value == null)
{
isModified = true;
}
else if (this._first.UnderlyingValue == null)
{
if (value.UnderlyingValue != null)
{
isModified = true;
}
}
else if (value.UnderlyingValue == null)
{
isModified = true;
}
else if (!value.UnderlyingValue.Equals(this._first.UnderlyingValue))
{
isModified = true;
}
this._first = value;
if (isModified)
{
this._first.IsModified = isModified;
this.OnPropertyChanged("First");
}
}
}
[DataMember]
private SmartProperty<string> _last;
public SmartProperty<string> Last
{
get { return this._last ?? (this._last = new SmartProperty<string>()); }
set
{
bool isModified = false;
if (this._last == null)
{
if (value != null)
{
isModified = true;
}
}
else if (value == null)
{
isModified = true;
}
else if (this._last.UnderlyingValue == null)
{
if (value.UnderlyingValue != null)
{
isModified = true;
}
}
else if (value.UnderlyingValue == null)
{
isModified = true;
}
else if (!value.UnderlyingValue.Equals(this._last.UnderlyingValue))
{
isModified = true;
}
this._last = value;
if (isModified)
{
this._last.IsModified = isModified;
this.OnPropertyChanged("Last");
}
}
}
[DataMember]
private SmartProperty<string> _maiden;
public SmartProperty<string> Maiden
{
get { return this._maiden ?? (this._maiden = new SmartProperty<string>()); }
set
{
bool isModified = false;
if (this._maiden == null)
{
if (value != null)
{
isModified = true;
}
}
else if (value == null)
{
isModified = true;
}
else if (this._maiden.UnderlyingValue == null)
{
if (value.UnderlyingValue != null)
{
isModified = true;
}
}
else if (value.UnderlyingValue == null)
{
isModified = true;
}
else if (!value.UnderlyingValue.Equals(this._maiden.UnderlyingValue))
{
isModified = true;
}
this._maiden = value;
if (isModified)
{
this._maiden.IsModified = isModified;
this.OnPropertyChanged("Maiden");
}
}
}
}
シリアル化/逆シリアル化操作にJson.netを使用しています。私のモデルは複雑であるため、Json.net ライブラリをパーソナライズしてエンティティをより効率的に操作できるかどうか疑問に思っています。私のモデルを修正することは不可能です。これは本当に大きなプロジェクトであり、変更は大きな影響を与えるからです。
ServiceStack.Text、fastJsonなど、 Json.net以外の Json シリアル化ライブラリをいくつか試しましたが、役に立ちませんでした。たとえば、ServiceStack.Text はプライベート フィールドをシリアル化しません。ライブラリのディスカッション ページでわかるように、fastJson は複雑なエンティティのシリアル化に問題があります...
簡単に言うと、Json.net のソース コードをダウンロードして、独自のエンティティ用にライブラリをカスタマイズしましたが、ライブラリで迷子になりました。:) この種のエンティティのパフォーマンスを改善するための提案はありますか? 私は自分のエンティティでプライベート フィールドのみをシリアル化しているので、これはポイントになると思いますが、開始方法がわかりません。
ありがとう、