0

プロジェクトで古いバージョンのSharparchを使用しており、JSON.NETを使用してシリアル化しようとしています。JavascriptSerializerは機能しますが、設定にはJSON.NETを使用します。

ここに問題があります。何らかの理由で、単純なSharpオブジェクトをシリアル化しようとすると、次のようになります。

// my sharp object
[Serializable]
public class Contact : Entity
{
    public virtual string EmailAddress { get; set; }
}

...

// in sharp, this is what happens to Entity
[Serializable]
public abstract class Entity : EntityWithTypedId<int> {
    protected Entity();
}

// and then into EntityWithTypedId
[Serializable]
public abstract class EntityWithTypedId<IdT> : ValidatableObject, IEntityWithTypedId<IdT> {
    protected EntityWithTypedId();

    [JsonProperty]
    [XmlIgnore]
    public virtual IdT Id { get; protected set; }

    public override bool Equals(object obj);
    public override int GetHashCode();
    protected override IEnumerable<PropertyInfo> GetTypeSpecificSignatureProperties();
    public virtual bool IsTransient();
}

次のJSON変換を実行する{ "Id" : 0 }と、結果としてのみ返されます。

Contact test = new Contact {
    EmailAddress = "test@test.com"
};
string result = JsonConvert.SerializeObject(test);

オブジェクトの内容全体を返す方法について何かアイデアはありますか?

4

1 に答える 1

1

S#arpアーキテクチャのBaseObjectクラスでは、メンバーのシリアル化がOptInに設定されていましたが、これは2.0で削除されました。

オプションは次のとおりです。

  • SharpArchitecture2.0へのアップデート
  • 別のjsonシリアライザーを使用してください。ServiceStack.Textは素晴らしいです。
  • プロパティを削除してSharpArchitecture1.6を再コンパイルします
  • シリアル化する特定のプロパティにJsonProperty属性を追加します
于 2012-09-13T22:36:55.407 に答える