問題タブ [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.
.net - Microsoftは、循環参照を持つアセンブリをどのように作成しましたか?
.NET BCLには、以下の間に循環参照があります。
System.dll
とSystem.Xml.dll
System.dll
とSystem.Configuration.dll
System.Xml.dll
とSystem.Configuration.dll
これが.NETReflectorのスクリーンショットで、私が何を意味するかを示しています。
マイクロソフトがこれらのアセンブリをどのように作成したかは、私には謎です。これを可能にするために特別なコンパイルプロセスが必要ですか?ここで何か面白いことが起こっていると思います。
.net - .NET フレームワークで自己再帰アセンブリ参照に遭遇する
私は C# コードを書いていて、ベース アセンブリの参照アセンブリを再帰的にたどり、これらの参照の有向非巡回グラフを作成してトポロジカル ソートを実行していました。これは、Assembly クラスのGetReferencedAssemblies()メソッドを使用して行っています。
コードをテストしているときに、驚いたことに、.NET フレームワーク内の一部のアセンブリが明らかにアセンブリ参照としてリストされていることがわかりました。そのような例の 1 つがSystem.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089で、Reflector で確認できるように、System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089が参照としてリストされています。 .
これに気づいたら、AssemblyNames を比較して無限再帰を破るのは簡単でしたが、自己再帰アセンブリを自分で生成できなかったので、状況が気になります。(これに関する情報をグーグルで検索することはできません。参照として自分自身を追加しても、結果のアセンブリは自己再帰的になりません。)
要するに、自己再帰アセンブリ参照は本当に「コーシャ」ですか?システムアセンブリのいくつかが自分自身を参照する理由は何ですか?
ありがとう。
c# - 循環参照の解決 (C#)
私は一日中座っていた循環参照/依存関係にいくつかの問題があります。私の思考プロセスに何か問題があるに違いありません。
ここに私のプロジェクトがあります:
現在の参照/依存関係:
サービス プロジェクトにすべてのサービスがあり、ドメイン プロジェクトにモデル、リポジトリ、およびモデルをクエリするための「流暢な」拡張機能があり、メイン プロジェクトとユーティリティ プロジェクトがほとんど自明であるような方法でプロジェクトを構築したかったのです。
発生した問題:
1) Flip.Services プロジェクトに EmailService があり、ローカライズされたメールを送信する必要があります。すべてのローカライズは、Flip.Main の App_GlobalResources で行われます。Flip.Main は既にサービス レイヤーに依存しているため、強く型付けされた電子メールやその他のローカライズされたリソースをサービス レイヤーに取得する方法がわかりません。したがって、メイン プロジェクトに依存させることができます。
2) 厳密に型指定された検索クエリを表す CustomerSearchFilter などのビジネス クラスがあります。これらのビジネス クラスはドメイン モデルの一部ではないため、Flip.Domain プロジェクトの外部に配置する必要があります。ただし、CustomerSearchFilter クラスにはドメイン クラス インスタンス (CustomerGroup など) があるため、ドメイン クラスについて知る必要があります。同時に、Flip.Domain プロジェクトの Fluent インターフェイスは CustomerSearchFilter が何であるかを知る必要があるため、それを IQueryable インターフェイスに適用できます。再び循環参照。
3) ASP.NET MVC Flip.Main プロジェクトで特定のコントローラー アクションを装飾するために使用するカスタム [AuthorizeSessionState] 属性があります。これは、Flip.Services プロジェクトに存在する SessionService をインスタンス化する必要がある ActionFilterAttribute です。ただし、これを Utility クラスに入れることはできません (Flip.Services は既に Flip.Utility を参照しているため)。私はそれらが Flip.Main にあるべきではないと思います-これのために別のプロジェクトを作成する必要があります!?
(あと20個)
特に、他の人は通常循環参照の問題に遭遇しないことを読んだとき、どこかで間違いを犯しているように感じます。ヘルプ?
c++ - ポインターを使用しない C++ での循環参照
ポインターを使用せずに循環参照を定義する方法はありますか?
私はこのようなものを持っている必要があります:
ありがとう!
circular-dependency - 複数レベルの参照と依存関係で循環ロジックまたは再帰を検出する方法
このような複数レベルの依存関係のグラフがあり、このグラフで循環参照を検出する必要があります。
A = B
B = C
C = [D、B]
D = [C、A]
誰かがこのような問題を抱えていますか?
任意の解決策???
英語でありがとうとごめんなさい.
========= 更新 ==========
別の状況がありました。
1
2 = 1
3 = 2
4 = [2, 3]
5 = 4
この場合、私の再帰コードは "4" 参照で 2 回反復しますが、この参照は無限ループを生成しません。私の問題は、関数が参照を複数回反復し、無限ループではない場合と、無限ループである場合を知り、ユーザーに通知することです。
1 = 4
2 = 1
3 = 2
4 = [2, 3]
5 = 4
このケースは、2 番目の例とは少し異なります。これにより、無限ループが発生します。ケースが無限ループを生成するかどうかをどのように知ることができますか?
python - Python で weakref を適切に使用する方法とタイミング
クラスのインスタンスが相互に親 <-> 子参照を持つコードがいくつかあります。たとえば、次のようになります。
これにより、のような循環参照が作成され、Run() の完了後に解放されないと思いますよね?. では、どうすれば解放されるのでしょうか。、または-のようなことができると思いますが、いつそれを行うべきかわからない場合はどうすればよいですか?root
c1
c2
root.children.clear()
self.parent = None
これはweakrefモジュールを使用する適切な時期ですか? 正確には、何を弱参照化しますか? 属性parent
?属性children
?オブジェクト全体?上記のすべて?WeakKeyDictionary と weakref.proxy についての話が見られますが、この場合、それらをどのように使用する必要があるかは明確ではありません。
これは Python 2.4 でもあります (アップグレードできません)。
更新: 例とまとめ
どのオブジェクトを弱参照化するかは、どのオブジェクトが他のオブジェクトなしで存続できるか、およびどのオブジェクトが相互に依存しているかによって異なります。寿命が最も長いオブジェクトには、寿命が短いオブジェクトへの弱参照が含まれている必要があります。同様に、weakref を依存関係に作成するべきではありません。作成すると、依存関係がまだ必要であるにもかかわらず、黙って消えてしまう可能性があります。
たとえば、ツリー構造 があり、root
子があり、子がなくkids
ても存在できる場合、オブジェクトはその にweakrefsを使用する必要があります。これは、子オブジェクトが親オブジェクトの存在に依存する場合にも当てはまります。以下では、子オブジェクトはその深さを計算するために親を必要とするため、 の強力な参照です。ただし、属性のメンバーはオプションであるため、循環参照を防ぐために弱い参照が使用されます。root
kids
parent
kids
関係をひっくり返すために、以下のようなものがあります。ここで、Facade
クラスはSubsystem
機能するためにインスタンスを必要とするため、必要なサブシステムへの強力な参照を使用します。 Subsystem
ただし、s が機能する必要はありませんFacade
。 s は、互いのアクションについて sSubsystem
に通知する方法を提供するだけです。Facade
c# - c#:循環参照を検索するユーティリティ/正しい順序でコンパイルしますか?
すべてのプロジェクトのソリューションまたはディレクトリに問い合わせて、循環参照がどこにあり、順番にコンパイルできるかを教えてくれる優れたユーティリティまたはプログラムを知っている人は誰でもいます。
少し前に見たのを覚えていますが、どこにも見つかりません。
c++ - ポインタなしでデフォルトのパラメータ循環参照を宣言しますか?
間接化せずにヘッダーファイルでこれらのクラスを宣言する方法はありますか?
Visual C ++ 2008は、次のように教えてくれます。
そして、Bの前方宣言(「クラスB;」)を指し、明らかに以下のBのコンストラクターを見ることができません。BにはメンバーとしてAが含まれているため、AはBをフォローできません。
間接参照を使用する必要がある場合、最善の方法は何ですか?おそらくC++0xではBのAはunique_ptrメンバーである可能性がありますか?それとも、純粋にこの問題を回避するためのブーストクラスがありますか?
asp.net-mvc - Json と循環参照の例外
別のオブジェクトへの循環参照を持つオブジェクトがあります。これらのオブジェクト間の関係を考えると、これは適切な設計です。
説明する
予想どおり、Json を使用してマシンまたは顧客オブジェクトをシリアル化しようとすると、問題が発生します。Machine オブジェクトと Customer オブジェクトの間の関係を壊したくないので、この問題を解決する方法がわかりません。この問題を解決するためのオプションは何ですか?
編集
現在、コントローラーの基本クラスが提供する Json メソッドを使用しています。したがって、私が行っているシリアライゼーションは次のような基本的なものです。