私は、さまざまなフロント エンド (MVC3、WPF4、WP7) に MVVM を使用するクロスプラットフォーム プロトタイプで Glimpse をテストしてきましたが、Json.NET シリアライゼーションの問題により、MVC3 で Glimpse に問題が発生したようです。Glimpse は、MVVM を使用していないビューで正常に動作しています。
MVVMLight v3.0.3、Autofac for DI v2.5.2、Glimpse v0.86 を使用。
Glimpse のログは次のとおりです。
2011-12-14 11:23:39.9096|INFO|Glimpse.Core.Module|RequestId 2e9285ee-a2ac-44fe-bd26-e85fb2f83b1b の BeginRequest 処理が完了しました (/)| 2011-12-14 11:23:39.9096|警告|Glimpse.Mvc3.Plugin.Execution|System.Web.Mvc.ControllerActionInvoker 型の get_Binders メソッドはプロキシ可能ではありません。| 2011-12-14 11:23:39.9096|警告|Glimpse.Mvc3.Plugin.Execution|System.Web.Mvc.ControllerActionInvoker タイプの set_Binders メソッドはプロキシ可能ではありません。| 2011-12-14 11:23:39.9096|警告|Glimpse.Mvc3.Plugin.Execution|System.Web.Mvc.ControllerActionInvoker タイプの GetType メソッドはプロキシ可能ではありません。| 2011-12-14 11:23:39.9096|警告|Glimpse.Mvc3.Plugin.Execution|System.Web.Mvc.ControllerActionInvoker タイプの MemberwiseClone メソッドはプロキシ可能ではありません。| 2011-12-14 11:23:39.9356|INFO|Glimpse.Core.Module|RequestId 2e9285ee-a2ac-44fe-bd26-e85fb2f83b1b の PostRequestHandlerExecute 処理が完了しました (/)| 2011-12-14 11:23:39.9356|INFO|Glimpse.Core.Module|requestId 2e9285ee-a2ac-44fe-bd26-e85fb2f83b1b の PostReleaseRequestState 処理が完了しました (/)| 2011-12-14 11:23:39.9576|警告|Glimpse.Core.Plumbing.GlimpseSerializer|シリアライザー エラー|System.NotSupportedException--'CommandConverter' は 'GalaSoft.MvvmLight.Command.RelayCommand' を 'System.String' に変換できません'.-- System.ComponentModel.TypeConverter.GetConvertToException (オブジェクト値、タイプ destinationType) で System.Windows.Input.CommandConverter.ConvertTo (ITypeDescriptorContext コンテキスト、CultureInfo カルチャ、オブジェクト値、型 destinationType) で System.ComponentModel.TypeConverter.ConvertToString (ITypeDescriptorContext コンテキスト、CultureInfo カルチャ、オブジェクト値) で System.ComponentModel.TypeConverter.ConvertToInvariantString (オブジェクト値) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.TryConvertToString (オブジェクトの値、型の型、文字列) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeString (JsonWriter ライター、オブジェクト値、JsonStringContract コントラクト) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue (JsonWriter ライター、オブジェクト値、JsonContract valueContract、JsonProperty メンバー、JsonContract コレクションValueContract) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.WriteMemberInfoProperty (JsonWriter ライター、オブジェクト memberValue、JsonProperty プロパティ、JsonContract コントラクト) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter ライター、オブジェクト値、JsonObjectContract コントラクト、JsonProperty メンバー、JsonContract コレクションValueContract) で 2011-12-14 11:23:39.9756|WARN|Glimpse.Core.Plumbing.GlimpseSerializer|Serializer エラー|Newtonsoft.Json.JsonWriterException--ステート プロパティのトークン PropertyName は無効な JavaScript オブジェクトになります.-- Newtonsoft.Json で.JsonWriter.AutoComplete(JsonToken tokenBeingWritten) Newtonsoft.Json.JsonWriter.WritePropertyName (文字列名) で Newtonsoft.Json.JsonTextWriter.WritePropertyName (文字列名) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.WriteMemberInfoProperty (JsonWriter ライター、オブジェクト memberValue、JsonProperty プロパティ、JsonContract コントラクト) で Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter ライター、オブジェクト値、JsonObjectContract コントラクト、JsonProperty メンバー、JsonContract コレクションValueContract) で ...など
関連NotSupportedException
するモデル/ビューモデルのフィールドとプロパティをマークしてみまし[NonSerialized]
たが、実装されているため、問題があるようです。[JsonIgnore]
[ScriptIgnore]
CommandConverter
RelayCommand
ICommand
[TypeConverter("System.Windows.Input.CommandConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null"), ValueSerializer("System.Windows.Input.CommandValueSerializer, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")]
public interface ICommand
誰でもそれを回避する方法を知っていますか?
JsonWriterException
また、 : Token PropertyName in state Property would result in an invalid JavaScript objectを説明するのに途方に暮れており、他の人もそうであるようです。
トークン Xと状態 Xが何を指しているか知っている人はいますか?