2

次のオブジェクトがあり、Json.NET を使用して Json にシリアル化しようとしています。

[Serializable]
public class FlightSelection : IEquatable<FlightSelection>
{
    public static readonly DateTime InitialDate;

    public FlightSelection();

    public FlightWeekSelectionType FlightWeekSelectionType { get; set; }
    public bool IsValidProposalLineWeeksExists { get; }
    public int Play { get; set; }
    public List<ProposalLineWeek> ProposalLineWeeks { get; set; }
    public int SelectedCount { get; }
    public int Skip { get; set; }

    public void ApplyPattern();
    public bool Equals(FlightSelection other);
    public override bool Equals(object obj);
    public bool[] ToBoolArray();
    public override string ToString();
}

次のコードでシリアル化しようとしています:

var jsSettings = new JsonSerializerSettings();
var fs = new FlightSelection();
string json = JsonConvert.SerializeObject(fs, Formatting.None, jsSettings);

次のエラーが表示されます。The 'obj' argument is not a FlightSelection object.

理由がよくわかりません。「obj」が表示されるオブジェクト内の唯一の場所は、Equals メソッドです。シリアライザーがメソッドを気にするのはなぜですか。

簡単なものがありませんか?

編集: コメントで要求されたスタック トレース:

CC.Fusion.Business.Model.FlightSelection.Equals(Object obj) で System.Collections.Generic.ObjectEqualityComparer で1.IndexOf(T[] array, T value, Int32 startIndex, Int32 count) at System.Array.IndexOf[T](T[] array, T value, Int32 startIndex, Int32 count) at System.Collections.Generic.List1.Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriterライター、オブジェクト値、JsonPropertyプロパティ、JsonContractコントラクト、JsonContainerContract containerContract、JsonProperty containerProperty)でNewtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriterライター、オブジェクト値、JsonContainerContract コントラクト、JsonProperty メンバー、JsonProperty プロパティ、JsonContract& memberContract、Object& memberValue) の Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter ライター、オブジェクト値、JsonObjectContract コントラクト、JsonProperty メンバー、JsonContainerContract コレクションコントラクト、JsonProperty containerProperty) は Newtonsoft にあります。 Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter ライター、オブジェクト値、JsonContract 値Contract、JsonProperty メンバー、JsonContainerContract コンテナー契約、JsonProperty コンテナー プロパティ) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter ライター、オブジェクト値、JsonObjectContract コントラクト、JsonProperty メンバー、JsonContainerContract コレクション契約、JsonProperty コンテナー プロパティ) Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter ライター、オブジェクト値、JsonContract valueContract、JsonProperty メンバー、JsonContainerContract コンテナー契約、JsonProperty コンテナー プロパティ) 、JsonContainerContractコレクションContract、JsonProperty containerProperty) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter ライター、オブジェクト値、JsonContract valueContract、JsonProperty メンバー、JsonContainerContract コンテナー契約、JsonProperty コンテナー プロパティ) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter ライター、オブジェクト値、JsonObjectContractコントラクト、JsonProperty メンバー、JsonContainerContract collectionContract、JsonProperty containerProperty) Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter ライター、オブジェクト値、JsonContract valueContract、JsonProperty メンバー、JsonContainerContract containerContract、JsonProperty containerProperty) で Newtonsoft.Json.Serialization.JsonSerializerInternalizeWriter.SerializeValue (JsonWriter jsonWriter、オブジェクト値、Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) で Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value, Type objectType) で Newtonsoft.Json.JsonConvert.SerializeObject(Object value) c:\Code.Net\ClearChannel\Sandbox\ の APProxyServer.APProxy.GetProposal(Int32 提案 ID) の Newtonsoft.Json.JsonConvert.SerializeObject(オブジェクト値、書式設定、JsonSerializerSettings 設定) で、型の種類、書式設定、JsonSerializerSettings 設定) APProxyServer\APProxy\APProxy.svc.cs: System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object インスタンス、Object[] 入力、Object[]& 出力) の SyncInvokeGetProposal(Object , Object[] , Object[] ) の行 194 System.ServiceModel.Dispatcher で。DispatchOperationRuntime.InvokeBegin(MessageRpc&rpc)

4

1 に答える 1