問題タブ [circular-dependency]

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 投票する
4 に答える
17367 参照

c# - 私の C# プロジェクトでの循環参照

次のような状況があります。

  1. MyCompany.MyProject.Domainドメイン モデルと部分クラス (など) を含むプロジェクトContact

  2. 姓と名の簡単な URL フレンドリーなテキスト表現を提供Contactするプロパティを使用してクラスを (拡張メソッドではなく部分クラスによって) '拡張' したいと考えています。Slug

  3. ToSlug()私のUtilityプロジェクトMyCompany.MyProject.Utilitiesには、2) で必要なことを正確に行う文字列拡張メソッドがあります。

  4. 問題: 私のUtilityプロジェクトは既に私のプロジェクトを参照しています。これは、循環参照を引き起こさずにプロジェクトのメソッドをプロジェクトに表示させるDomainことができないことを意味します。DomainUtilityToSlug()

Slugこれを解決するために別のプロジェクトを作成することに熱心ではなく、ロジックを共有したいと思っています。

どうすればこれを解決できますか?

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

.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 を比較して無限再帰を破るのは簡単でしたが、自己再帰アセンブリを自分で生成できなかったので、状況が気になります。(これに関する情報をグーグルで検索することはできません。参照として自分自身を追加しても、結果のアセンブリは自己再帰的になりません。)

要するに、自己再帰アセンブリ参照は本当に「コーシャ」ですか?システムアセンブリのいくつかが自分自身を参照する理由は何ですか?

ありがとう。

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

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 番目の例とは少し異なります。これにより、無限ループが発生します。ケースが無限ループを生成するかどうかをどのように知ることができますか?

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

c++ - Lazy C++ - 鶏と卵の問題

この質問から得たフィードバックに基づいて、OSX ラップトップで Lazy C++ を使用することに興味があります。Lazy C++のWeb ページには、Linux および Windows 用のバイナリが用意されていますが、OSX 用のバイナリはありません。Lazy C++ ソースをダウンロードするためのリンクもありますが、ビルド プロセスの一部として lzz バイナリが必要です。これにより、lzz バイナリを取得するために lzz バイナリが必要になる状況が発生します。

lzz バイナリなしでラップトップで lzz をビルドするにはどうすればよいですか? Linux または Windows マシンでビルドの一部を実行して lzz ソース ファイルを前処理し、ビルドのためにソースをラップトップに転送する必要がありますか? または、他に試してみるべきことがありますか?

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

dependency-injection - 依存性インジェクション:部分的に初期化されたオブジェクトをインジェクトします

この質問はUnityコンテナに関するものですが、どの依存関係コンテナにも適用できると思います。

循環依存の2つのクラスがあります。

技術的には、それらをシングルトンとして扱う場合、両方の依存関係をインスタンス化して正しく注入することが可能です。

Unityで同じことをしようとすると、StackOverflowExceptionが発生します。

Unityが部分的に初期化されたオブジェクトの使用から私を保護しようとしていることは理解していますが、この保護を義務ではなくオプションとして使用したいと考えています。

質問:現在の行動は不可能ですか?

0 投票する
7 に答える
3076 参照

database-design - データベース設計: 循環依存

次のデータベースを想像してください。

テーブル「会社」には、フィールド id、name、および flagship_product_id があります。テーブル 'products' にはフィールド id、name、および company_id があります。

1 つの会社には主力製品 (1:1 の関係) が必要であり、すべての製品には 1 つの会社 (1:N の関係) が必要です。

MyISM などのストレージ エンジンを使用する場合、上記のシナリオで問題はないはずですが、InnoDB などのエンジンを使用する場合、新しいデータを INSERT するときに問題が発生します。

最初の INSERT で NULL の関係を許可する以外に良い解決策は何ですか?

要約すると、企業は主力製品を1 つ持つ必要があります。

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

vb6 - VB6、ActiveX: OCX への参照を作成できません

ユーザー コントロールの作成に少し問題があります。

コントロールを作成しましたが、別のコントロールで使用したいです。

コンポーネントのリストに参照を追加する (コンパイル済みの OCX として使用したい) とすぐに、「プロジェクト間の循環参照は許可されていません」のようなメッセージ「Wechselseitiger Verweis zwischen Projekten nicht zulässig」が表示されます。

奇妙なことに、使用したいコントロールには、最初のプロジェクトへの参照のタイプがありません。

Visual Studio のツールとして出荷されている依存関係ウォーカーを使用してこれを確認しましたが、他のコントロールへの参照がないことも示しています。テキスト エディターを使用してプロジェクト ファイルを開いて、参照されている OCX を確認しましたが、何も見つかりませんでした。

いくつかのコメントを避けるために: .NET または他の言語に変更することはできません。

コメント:なぜ、コンパイルされていない .ctl ファイルを追加してもうまくいくようです。今のところ、私は仕事を続けることができます。とにかく、解決策と、現在の星座で機能しない理由に興味があります。

最終投票:私はすべてのファイルを調べてきましたが、OCX を作成する代わりに、すべての制御ファイルをプロジェクトに追加しただけです。私はそれをあきらめます。ありがとうございます...

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

c++ - C++ クラスの依存関係

両方が互いに依存しているため、クラスでいくつかの問題が発生しています。一方を宣言しないと、もう一方を宣言することはできません。

ご覧のとおり、「ブロック」クラスは「ボード」とは何かを知る必要があり、その逆も同様です。前もって感謝します!

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

c# - C# 循環依存の問題解決手法

C# アプリケーションをレイヤーに分割しながら、次の方法でレイヤー間の循環依存の問題を解決しました。

sln の「共通」プロジェクトが冗長に見えるので、誰かが私にもっと良い解決策を提案できますか?

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

json - 循環依存関係を使用して Jersey から JSON を取得する

Jersey と JAXB を使用するサービスを作成しています。私のクラスには、@XMLRootElement、@XMLElement などのアノテーションが付けられています。2 つのクラス間に循環依存関係があるため、循環依存プロパティに @XMLTransient アノテーションを付けました。したがって、サービスを呼び出すと、デフォルトで xml が取得され、完全に機能します。ただし、JSON を使用しようとすると、次のような行が繰り返されます。

{"name":"dere","entries":[{"points":0,"wins":0,"losses":0,"tie":0,"leaderboard":{"name":"dere ","entries":[{"points":0,"wins":0,"losses":0,"tie":0,"leaderboard":{"name":"dere","entries":[ {"ポイント":0,"勝ち":0,"負け":0,"引き分け":0,"リーダーボード":{"名前":"デレ","エントリ":[{"ポイント":0, "勝ち":0,"負け":0,"引き分け":0,"リーダーボード":{"名前":"デレ"," ... など

したがって、JSON を使用している場合、循環依存関係に問題があるようです。XML で行われるように、循環依存項目が JSON 出力に表示されないようにしたいと思います (@XMLTransient アノテーションのため)。

どうすればこれを達成できるかについて、誰かが洞察を提供できますか?