問題タブ [serializable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - バイナリ シリアライズ可能な XML 固有のオブジェクト (XElement など) はありますか?
MSMQ (主に文字列) を介してネットワーク経由でオブジェクトをシリアル化するユース ケースがあります。キューからオブジェクトを読み取るときに、ユーザーがオブジェクトを XML にするつもりだったのか文字列にするつもりだったのかを判断できるようにしたいと考えています。これを行う良い方法は、タイプを確認することだけだと思っていました。XmlElement の場合は XML データになり、それ以外の場合は文字列または CDATA になります。データが有効な XML かどうかだけを確認したくない理由は、文字列としてシリアル化されるはずのデータが実際には有効な XML である場合があるためです。呼び出し元が文字列または XML への逆シリアル化を制御できるようにしたい。
XElement や XmlElement (両方ともシリアル化可能とマークされていない) のように、.NET Framework でシリアル化可能とマークされている型はありますか?
c# - ComponentModel.Containerをシリアル化しますか?
System.ComponentModel.Containerをシリアル化(バイナリ)することは可能ですか?
java - どうすればシリアライズ可能なオブジェクトを取得できますか?
たとえば、53 個のフィールドを持つ GameStartegy クラスがあり、すべてのタイプが Strategy などの 1 つのインターフェイスであり、これらのフィールドの 1 つが Date であり、オブジェクトの作成時に初期化されるという質問があります。シリアライズ可能なオブジェクト ?? 日付のようなすべてのフィールドをシリアル化する必要がありますか? ありがとう
gwt - GWT-ときどきcom.google.gwt.user.client.rpc.SerializationException
次のような例外が時折発生することに悩まされています。
com.google.gwt.user.client.rpc.SerializationException:タイプ「xxx」は「com.google.gwt.user.client.rpc.IsSerializable」に割り当てることができず、カスタムフィールドシリアライザーがありませんでした。セキュリティ上の理由から、このタイプはシリアル化されません。:instance = xxx at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610)at com.google.gwt.user.client.rpc.impl .AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter $ ValueWriter $ 8.write(ServerSerializationStreamWriter.java:152)atcom.google.gwt.user.server。 com.google.gwt.user.server.rpc.RPCのrpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534)。encodeResponse(RPC.java:609)at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:467)at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC。 java:564)at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)at de.softconex.travicemanager.server.TraviceManagerServiceImpl.processCall(TraviceManagerServiceImpl.java:615)at com.google .gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)at javax.servlet.http.HttpServlet .service(HttpServlet.java:710)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)atorg.apache.catalina.core.ApplicationFilterChain。internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)at org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve .java:230)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)atorg.jboss。 org.apache.catalinaのweb.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)。core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve。 java:157)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)at org.apache.coyote.ajp .AjpAprProcessor.process(AjpAprProcessor.java:419)at org.apache.coyote.ajp.AjpAprProtocol $ AjpConnectionHandler.process(AjpAprProtocol.java:378)at org.apache.tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint .java:1508)at java.lang.Thread.run(Thread.java:619)invoke(ErrorReportValve.java:102)at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)at org.apache.coyote.ajp.AjpAprProtocol $ AjpConnectionHandler .process(AjpAprProtocol.java:378)at org.apache.tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint.java:1508)at java.lang.Thread.run(Thread.java:619)invoke(ErrorReportValve.java:102)at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)at org.apache.coyote.ajp.AjpAprProtocol $ AjpConnectionHandler .process(AjpAprProtocol.java:378)at org.apache.tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint.java:1508)at java.lang.Thread.run(Thread.java:619)Connector.CoyoteAdapter.service(CoyoteAdapter.java:262)at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)at org.apache.coyote.ajp.AjpAprProtocol $ AjpConnectionHandler.process(AjpAprProtocol.java: 378)org.apache.tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint.java:1508)at java.lang.Thread.run(Thread.java:619)Connector.CoyoteAdapter.service(CoyoteAdapter.java:262)at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)at org.apache.coyote.ajp.AjpAprProtocol $ AjpConnectionHandler.process(AjpAprProtocol.java: 378)org.apache.tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint.java:1508)at java.lang.Thread.run(Thread.java:619)
アプリケーションは通常正常に実行されています。示されたクラスは、Serializable(オブジェクトグラフ全体)を実装します。
これまでのところ、唯一のパターン/観察は次のとおりです。
アプリケーションがiframe内で使用されている場合にのみ問題が発生するようです
新しいバージョンのアプリケーションがデプロイされたときに問題が発生するようです
Firefoxをプライバシーモードで実行(すべてのキャッシュを無効にするなど)しても問題は解決しません
何か案は?
ホルガー
java - Java オブジェクトがシリアライズ可能であり、クローン可能ではないことが理にかなっているのはいつですか?
Java クラスがSerializable
インターフェースを実装しているがパブリック メソッドを持たない場合clone()
、通常は次のようなディープ コピーを作成できます。
私はこのようなサードパーティのライブラリ クラスによく遭遇し、上記のようなハックに頼っています。ObjectOutputStream
場合によっては、コピーを浅くするために拡張することさえありました。非効率的であること以外に、重大な問題が発生したことはありません (エンコード/デコードが遅く、一時的なシリアル化グラフが大量のメモリを消費する可能性があります)。
この手法を安全に使用できない場合は、おそらくクラスを宣言すべきではありませんSerializable
。
だから私が知りたいのは、あなたのクラスSerializable
が.clone()
Cloneable
asp.net - ASP.NET UserControl をシリアル化する方法
私は GridView を持つアプリケーションを持っています。この GridView は、PagerTemplate に、UserControl である GridViewPager を持っています。
今、この GridViewPager を ViewState に格納しようとしていますが、シリアル化に問題があります。Asp.Net は、クラスがシリアライズ可能としてマークされていないことを教えてくれます。次のように、シリアル化可能としてマークしようとします。
しかし、それはうまくいきません
私のコードは単純です、見てみましょう:
そして、ここにエラーがあります
「/」アプリケーションでサーバー エラーが発生しました。
アセンブリ 'App_Web_epwoiz7x、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' のタイプ 'ASP.view_usercontrols_pagers_gridviewpager_ascx' は、シリアル化可能としてマークされていません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Runtime.Serialization.SerializationException: アセンブリ 'App_Web_epwoiz7x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' の Type 'ASP.view_usercontrols_pagers_gridviewpager_ascx' は、シリアル化可能としてマークされていません。
ソース エラー:
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
スタックトレース:
[SerializationException: Type 'ASP.view_usercontrols_pagers_gridviewpager_ascx' in Assembly 'App_Web_epwoiz7x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type) +7733643 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type 型、StreamingContext コンテキスト) +258 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +111 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj、ISurrogateSelector surrogateSelector、StreamingContext コンテキスト、SerObjectInfoInit serObjectInfoInit、IFormatterConverter コンバーター、ObjectWriter objectWriter) +161 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(ストリームのシリアル化ストリーム、オブジェクト グラフ、Header[] ヘッダー、ブール値の fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(ストリームのシリアル化ストリーム、オブジェクトグラフ) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter ライター、オブジェクト値) +845ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,オブジェクト値) +845ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,オブジェクト値) +845オブジェクト グラフ、Header[] ヘッダー、ブール値 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(ストリーム serializationStream、オブジェクト グラフ) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter ライター、オブジェクト値) +845オブジェクト グラフ、Header[] ヘッダー、ブール値 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(ストリーム serializationStream、オブジェクト グラフ) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter ライター、オブジェクト値) +845
[ArgumentException: タイプ 'ASP.view_usercontrols_pagers_gridviewpager_ascx' の値 'ASP.view_usercontrols_pagers_gridviewpager_ascx' のシリアル化エラー] 、オブジェクト stateGraph) +110 System.Web.UI.ObjectStateFormatter.Serialize(オブジェクト状態グラフ) +57 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize(オブジェクト状態) +4 System.Web.UI. Util.SerializeWithAssert(IStateFormatter フォーマッタ、オブジェクト stateGraph) +37 System.Web.UI.HiddenFieldPageStatePersister.Save() +79 System.Web.UI.Page.SavePageStateToPersistenceMedium(オブジェクト状態) +105 System.Web.UI.Page.SaveAllState( ) +236 System.Web.UI.Page.ProcessRequestMain (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) +1099
バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.3082; ASP.NET バージョン:2.0.50727.4028
java - どういう意味ですか: シリアル化可能なクラスは、静的な final serialVersionUID フィールドを宣言していませんか?
タイトルにある警告メッセージがあります。理解して削除したいと思います。この質問についてはすでにいくつかの回答を見つけましたが、技術用語が多すぎるため、これらの回答を理解できません。この問題を簡単な言葉で説明できますか?
PS私はOOPが何であるかを知っています。オブジェクト、クラス、メソッド、フィールド、およびインスタンス化とは何かを知っています。
PPS誰かが私のコードを必要とするなら、それはここにあります:
c# - コントロール プロパティ (例: TextBox.Text) をカスタム構成ファイルにシリアル化/保存します。
私は小さなプログラムに取り組んでおり、いくつかのコントロールの状態とプロパティを構成ファイルに保存したいと考えています。ただし、いくつかの理由により、「従来の」設定ファイルを使用したくありませんが、シリアル化するか、単に特定のファイルに保存します。
たとえば、window1 の TextBox1.Text を取得してシリアル化し、アプリの起動時に古い値を再利用できるようにします。たとえば、いくつかのチェックボックスについても同じことが言えます。
これはどのように行うことができますか?これは「学業」プロジェクトではありません。空き時間に C# をゼロから学んでいるからです。私はいくつかの方法を探しましたが、特にその目的のためにカスタムのシリアル化クラスを使用するか、Visual Studio の標準の .settings ファイルの設定を使用するため、単純に複雑すぎます。また、私は C# で作業しており、プログラムは MFC ではなく WPF を使用しています。
c# - 派生クラスにシリアライズ可能
派生クラスをシリアル化可能にする簡単な方法はありますか?
派生クラスをシリアライズ可能にする必要があるインターフェースを定義するとします。この投稿によると、派生クラスはそれを尊重する必要がないため、インターフェイスでシリアル化可能な属性を指定することはできません。
インターフェイスを ISerializable インターフェイスから継承できると思いますが、それは、派生クラスが属性を使用してシリアル化を指定できないことを意味しますか (ISerializable のメソッドを実際に実装するのではなく)。