問題タブ [circular-reference]

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.

0 投票する
2 に答える
1325 参照

.net - ISerializable を実装するオブジェクトの循環参照の解決

私は独自の IFormatter 実装を作成していますが、両方とも ISerializable を実装する 2 つの型の間の循環参照を解決する方法が思いつきません。

通常のパターンは次のとおりです。

次に、これを行います。

すぐに使用できる BinaryFormatter を使用して b をシリアル化および逆シリアル化すると、上記の参照等価性のテストは予想どおり true を返します。しかし、カスタム IFormatter でこれを実現する方法が思いつきません。

ISerializable でない状況では、ターゲット参照が解決されたら、リフレクションを使用して「保留中」のオブジェクト フィールドに簡単に再アクセスできます。ただし、ISerializable を実装するオブジェクトの場合、SerializationInfo を使用して新しいデータを挿入することはできません。

誰かが私を正しい方向に向けることができますか?

0 投票する
2 に答える
925 参照

c# - このシナリオで循環参照を回避する設計

依存関係ツリーは次のとおりです: BigApp -> 子アプリ -> ライブラリ

すべてのコンポーネントは、上記のライブラリの 1 つ (LibA) を多用しています。ただし、「上位レベル」のアセンブリからのクラスを必要とする「いくつかの」パブリック メソッドがあり、CIRCULAR 参照を避けたいと考えています。このための良いデザインとして何を提案しますか?

0 投票する
1 に答える
632 参照

database - 循環参照データベースの例外-これはこれですか?

私は循環参照でリンクされた4つのテーブルを持っています-私はこれが悪いと言われたことを大学から覚えていますが、例外があります...私はこれがそれらの1つであることを望んでいます:)

私のデータベースには4つのテーブルが含まれています。Teachers、classes、subjectsおよびteachers_classes。

以下は私の関係を要約したものです。

  • 先生は多くのクラスを持つことができます
  • クラスには多くの教師を含めることができます(したがって、teachers_classesはここで多対多を排除します)。
  • クラスには多くの科目を含めることができます
  • サブジェクトは1つのクラスしか持てません
  • 教師は多くの科目を持つことができます

これを視覚化できる場合、私のERDは正方形(または円)のように見えます...私はすでに単純なアプリを作成しており、他の誰かからこの問題を確認するように促されました。誰かがこれは例外であり、その理由を教えてください。私がこれについて教えられたことのどれも思い出せませんが、私のアプリケーションは私がやりたいことに対して完全にうまく機能しているようです!

0 投票する
3 に答える
385 参照

database-design - DB 設計 - 循環参照の問題のない親へのリンク

次の問題の解決策が思いつかなくて困っています。

次のようなデータベースがあるとします。

問題表

問題点の表

問題の割り当て表

問題を別の問題にリンクできるようにしたいと思います。ParentIssueId という名前の課題テーブルに列を追加することを考えました。これにより、課題をリンクできるようになりますが、この実装を行うと、課題テーブル内で循環参照が発生することが予測されます。これを行うためのより良い方法はありますか?もしそうなら、どのように?

ありがとう

0 投票する
1 に答える
2634 参照

java - Java:リフレクションを使用してオブジェクト情報をダンプするときに循環参照を回避するにはどうすればよいですか?

StackOverflowエラーの原因となる循環参照を回避するためにオブジェクトダンプメソッドを変更しました。これは私が最終的に得たものです:

このメソッドは、最初は次のように呼び出されます。

したがって、基本的に、以前にチェックしたすべてのオブジェクトを含むexcludeListを追加しました。これで、オブジェクトに別のオブジェクトが含まれていて、そのオブジェクトが元のオブジェクトにリンクしている場合、チェーンのさらに下流でそのオブジェクトをたどってはなりません。

ただし、まだ無限ループに陥っているため、ロジックに欠陥があるようです。なぜこれが起こっているのか誰かが知っていますか?

編集:

まだStackOverflowエラーが発生します

私の更新された方法:

EDIT2:

あなたの解決策は本当に良いようです。残念ながら、フィールドが4つしかない小さなクラスでしか使用していないのに、OutOfMemoryエラーが発生します。これは私が最終的に得たコードです:

このような小さなオブジェクトでOutOfMemoryエラーが発生することはありません。

何か案は?

EDIT3:

書き直されたバージョン:

getClass()。isPrimitive()は配列インデックスでも機能すると思いましたが、間違っている可能性があります。もしそうなら、あなたはこれをどのように扱いますか?また、他のgetClass()== Integerなどのチェックは、isPrimitive()チェックがこれを処理する必要があるため、私には不要のように見えました。

とにかく、単純なオブジェクトで使用すると、メモリ不足エラーが発生します。

0 投票する
4 に答える
10440 参照

perl - Perlのガベージコレクション

Javaとは異なり、Perlはガベージコレクションに参照カウントを使用します。C ++ RAII、スマートポインター、およびJava GCについて説明している以前の質問をいくつか検索してみましたが、Perlが循環参照の問題をどのように処理するかを理解していません。

Perlのガベージコレクターが循環参照をどのように処理するかを誰かが説明できますか?プログラムで使用されなくなった循環参照メモリを再利用する方法はありますか、それともPerlはこの問題を完全に無視しますか?

0 投票する
3 に答える
1191 参照

language-agnostic - この循環する双方向の依存関係をどのように解決できますか?

RequestHandler クラスと RequestListener クラスがあります。RequestHandler は RequestListener を作成し、それ自体への参照を渡します。次に、RequestListener は RequestHandler のメソッドを呼び出して、処理時にさまざまなタイプのリクエストを処理します (例: handleTypeARequest()、handleTypeBRequest() など)。残念ながら、RequestHandler は RequestListener (例: processNextRequest()) のメソッドも呼び出すため、循環依存関係があります。

これは、2 つの間の結合がより緊密であることを意味し、一般的にはコードの匂いと見なされます。

1 つの解決策は、異なるメソッドではなく、異なるオブジェクトを使用して各リクエストをカプセル化することです。RequestListener は、プロンプトが表示されたときにリクエストを処理し、そのリクエストに対して何らかのタイプの Request オブジェクトを返すことができます。残念ながら、私はこのアプローチがあまり好きではありません。その理由の 1 つは、より多くのオブジェクトとクラスの複雑さが増したためであり、もう 1 つはパフォーマンスの問題 (ここで重要です) のためです。RequestHandler で handleXXXRequest() メソッドを直接呼び出すと、一連のオブジェクトを作成し、必要になるまでそれらをバッファリングするためにスタックを維持するよりもはるかに高速です。

この問題に対する他の解決策はありますか?また、それは本当に問題なのでしょうか?

0 投票する
1 に答える
534 参照

.net - VB.NET-カスタムシリアル化と循環参照、クリーンなソリューションはありますか?

(バイト配列への)カスタムシリアル化を実装していますが、循環参照の処理で問題が発生しました。

例:

Aをシリアル化するときは、Bの各インスタンスをシリアル化する必要があります。

ただし、Bをシリアル化するときに問題が発生します。

無限ループを発生させずにBの親を記録するにはどうすればよいですか?

アイデア:

BのインスタンスがAのインスタンスのシリアル化によってのみシリアル化されることがわかっている場合は、AのインスタンスからのMyParent参照のセットアップを処理でき、インスタンスのバイトバッファー内にその情報を記録することもできません。 Bの

これは完全に正しいとは言えませんが、最善の解決策かもしれません。

この状況を処理するためのよりクリーンな方法はありますか?

0 投票する
1 に答える
175 参照

iphone - 循環参照を保持するオブジェクトの [NSObject description] を取得する

私はNSDictionaryを持っています。これは、子 NSDictionary の配列を含むいくつかのオブジェクトを保持します。各オブジェクトは@"Parent"、親 NSDictionary を指すようにキー付けされたオブジェクトを持ちます。

この循環参照は、次のような従来の呼び出しでオブジェクトを検査する機能を壊します。

オブジェクトを検査するための回避策を推奨してくれる人はいますか?

0 投票する
2 に答える
2286 参照

xml - .NET 4、WCF REST サービス、Entity Framework、シリアル化、および循環参照

そのタイトルはかなり一口です。できる限りはっきりさせてください...

エンティティ フレームワークを使用して SQL Server からオブジェクトのリストにデータをプルする .NET 4 で記述された WCF REST サービスがあります。その後、オブジェクトは XML としてクライアントに返されます。問題は、モデルの関係により、XML が相互に参照していることです。

問題を説明するのに役立つコードを次に示します。

私のモデル: http://bara.stardock.com/images/activity_model.png

サービス ロジックを処理するアクティビティ クラス:

上記のクラスのインターフェース:

Activity クラスは、Activities テーブルのモデルに基づいてエンティティ フレームワークによって自動生成されます。ただし、ActivitiesList オブジェクトを作成して、このクラスを拡張しました。

私の問題をもう一度説明すると、私の XML は単にアクティビティのリストを返すのではなく、基本アクティビティ内にある他のアクティビティを参照するいくつかのアクティビティを含むアクティビティのリストを返します。ややこしいですが、下の画像を見てください。

返される XML: http://bara.stardock.com/images/activity_xml1.png

「i8」の参照を持つアクティビティは、実際には「i2」の ID を持つアクティビティ内にある別のアクティビティを参照しています: http://bara.stardock.com/images/activity_xml2.png

私の質問は、Activity オブジェクトからこれらの余分な関係をすべて削除するにはどうすればよいですか? エンティティ フレームワークによって自動生成される、ネストされた ActivityType や EntityKey などを含まないアクティビティのリストにすることをお勧めします。

私は自分自身を十分に説明したことを願っています。そうでない場合は、その他の詳細をお知らせください。提供します。

バラ