問題タブ [fluent-interface]

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 に答える
2169 参照

php - メソッドチェーンの効果

PHP内でチェーンすることの利点は知っていますが、次のような状況になっているとしましょう。

オブジェクトを何度も繰り返し再利用することに関する問題、速度やベストプラクティスに従わないことなどの問題はありますか?

Fluent-Interfaceを初めて使用する場合は、これについてもよく読んでください:Fluent-InterfacesのMartin Fowler

このようにプログラムする必要はなく、次のように処理できることを完全に理解しています。

しかし、私がそのようなオブジェクトを持っているとしましょう:

注意してください->With(38,'HPK')->Skippable()、これはこのタイプのプログラミングのためのプロの完璧な例です

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

c# - Castle Windsor: 別のアセンブリからのインターフェイスを実装する、あるアセンブリからの型の自動登録

Castle WindsorIoC コンテナーとして使用しています。次のような構造のアプリケーションがあります。

  • MyApp.Services.dll
    • IEmployeeService
    • IContractHoursService
    • ...
  • MyApp.ServicesImpl.dll
    • EmployeeService : MyApp.Services.IEmployeeService
    • ContractHoursService : MyApp.Services.IContractHoursService
    • ...

現時点ではXML 構成を使用しており、新しい IService/Service ペアを追加するたびに、XML 構成ファイルに新しいコンポーネントを追加する必要があります。このすべてを流暢な登録 APIに切り替えたいのですが、私がやりたいことを行うための正確なレシピをまだ見つけていません。

誰でも助けることができますか?ライフスタイルはすべてになりますsingleton

よろしくお願いします。

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

entity-framework - EF4 fluent API を使用して削除をリンク テーブルにカスケードするにはどうすればよいですか?

リンク テーブルによって関連付けられている既存の (MSSQL 2008 R2) データベースに 2 つのテーブルがあります。

2 つのテーブルは、「プラン」と「ヒント」です。リンク テーブルは「PlanTipLinks」です。

プランには多くのヒントを含めることができ、ヒントは複数のプランに関連付けることができます (つまり、多対多の関係です)。アプリケーションでは、「Plan.Tips」の関係のみを気にします。Tip.Plans の逆関係は必要ありません。

リンク テーブル内の外部キー参照を null にすることはできません。

この関係をマッピングするために、次の流暢な API コードを使用しています。

これにより、テーブルに正しいエントリが作成されます。問題は、プランを削除すると、PlanTipLinks テーブルで外部キー例外が発生することです。

おそらく、プランが削除されたときに PlanTipLinks テーブルにカスケードするように指示する必要がありますが、その方法がわかりません。HasMany/WithMany メソッドを使用して WillCascadeOnDelete メソッドを呼び出すことができないようです。

ここで何が欠けていますか?

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

c# - メソッド名の末尾に前置詞を含めることは、通常の C# API 設計に従うか、または損なうか?

これが主観的な回答のように聞こえることは承知していますが、質問に対する客観的な回答が最も役立つため、質問をできるだけ客観的にするように努めます。

最近、メソッドの最後に前置詞を付ける癖があることをコード レビュアーから指摘されました。Pointクラスへの拡張メソッドとして私が書いた最近のメソッドは次のとおりです。

私のコードレビュー担当者は、メソッドpoint.Distance(rectangle). 私は常にこれを主観的でスタイルの問題と考えてきました。ただし、.NET API の設計がこの方向に向かっていることに気付きました。たとえば、NUnit の Fluent Interface を使用すると、次のようになります。

私はLinqでもこれを見ました:

.NET やサード パーティ API の設計者がメソッドの最後で前置詞を使用するための確立された、または一貫した方法はありますか? それとも、単にスタイルの問題であり、主観的なものですか? .NET フレームワーク自体の API 設計は、このポリシーに従って進化しましたか?それとも、常に適切な場所にありましたか?

0 投票する
8 に答える
412 参照

language-agnostic - 連鎖を極端に行う言語は?

それで、連鎖がどれほどクールで、それがどのように物事を読みやすくするかについて考えていました。多くの言語では、一連の関数を変数に適用する場合、次のように記述します。

そして、右から左、または最も内側から最も外側に読む必要があります。最初に申請fし、次にg、というように続きます。しかし、それが連鎖していれば、もっと似ているでしょう

そして、あなたはそれを普通の人間のように読むことができます。それで、私の質問は、そのようにそれを行ういくつかの言語がなければならないということです.それらは何ですか? それが、これらの派手な関数型プログラミング言語が行うことですか?


このため、私は通常、一連の一時変数を作成して、それを別々の行に分割して読みやすくすることになります。

私の魔法の言語はどこにありますか?変数を介在させる必要なく、行が長くなりすぎた場合でも、別の行に分割できます。

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

entity-framework - Entity Framework CTP5 の (別の名前の) 外部キー フィールドへのプロパティのマッピング

Entity Framework CTP5 Fluent API を使用して既存のデータベースをマップしようとしています。私は次のクラスを持っています:

対応するテーブルは、"Stores" および "Sales" と呼ばれます。Sales には、Stores テーブルの Id フィールドを指す StoreId 外部キーがあります。

Sale.Shop.Id をテーブルの StoreId にマップするのに苦労しています。それを ShopId に変更する自由はないので、マップする必要があります。

CTP4 では、以下を使用していました。

私は次のことを試しました:

ただし、これはプリミティブ型でのみ機能するようです。

このマッピングを指定するにはどうすればよいですか?

0 投票する
6 に答える
695 参照

flash - OOP の問題: クラスの拡張、関数のオーバーライド、jQuery のような構文

Flash、actionscript 3 で OOP 関連の問題があります。これは個人的なプロジェクトであり、この問題のデザイン パターンまたは回避策を探しています。私の目標は、新しいことを学ぶことです。

Chainというクラスを作成しました。遅延関数呼び出しを簡単にするために、この util-class を作成しました。ミリ秒単位の遅延で関数を追加することで、一連の関数を作成できます。このチェーンは、逆の順序であっても、複数回実行できます。このクラスには、自分自身を返す関数があります。これにより、次のような jQuery スタイルの構文を使用できるようになります。

この例では、問題を示すためだけに多くの関数を残しました。Chain クラスは、ほとんどの場合、関数を追加してチェーンを開始/停止するためのものです。

今、ChainTween という別のクラスがあります。いくつかのコア機能を備えたチェーンを維持し、ChainTween にいくつかのアニメーションのトリックを実行させるために、物事を分割しようとしています。私は、Chain クラスに基づいて小さなトゥイーン エンジンを作成するというアイデアを思いつきました。現在、Chain を拡張しています。Chain クラスからの保護された変数を多数使用し、Chain のいくつかのコア関数もオーバーライドして、Chain のプロセス内にトゥイーン関数を追加します。

これが問題です。連鎖構文を維持したいのですが、wait() は Chain インスタンスを返し、Chain にはアニメーション関数がありません。

ChainTween クラスの wait() および add() 関数をオーバーライドしようとしましたが、互換性のないオーバーライドが発生します。

chain.wait(100) を ChainTween としてキャストすることもできますが、これは非常に見苦しく、多数のチェーンを使用する場合には役に立ちません。ここで、ChainTween 関数を Chain に追加したくありません (ダミー関数もありません)。また、すべての関数の補完を保持したいので、Object を返すこともできません。インターフェイスを使用しようとしましたが、インターフェイスの関数はそれを実装するクラスに実装する必要があるため、これも同じ問題を引き起こします。

ここで、ChainTween 内に Chain のインスタンスを作成することを考えましたが、これでは関数をオーバーライドできないため、多くのプロパティを保護する代わりに公開する必要がありますが、これも好ましくありません。

これは可能ですか?これに対する優れた解決策はありますか?

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

entity-framework-4 - EntityFramework FluentAPI マッピングの問題

次のコードがあります。

問題はこのマッピング modelBuilder.Entity().HasRequired(p => p.Pointer_EntityDef2) .WithMany() .IsIndependent() .Map(m => m.MapKey(p => p.pID, "Pointer_EntityDef2") にあります);

データベースは規約を尊重しません。FK は Pointer_EntityDef2pId ではありません。私のクラスでは、ID 用の 1 つのプロパティとオブジェクト用の 1 つのプロパティ (これは正常に動作します) ではなく、1 つのプロパティ (EntityDef2 型の Pointer_EntityDef2) のみを持つことは可能ですか? FK名を持つプロパティ?そして、マッピングはどのように見えるべきですか?

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

foreign-keys - EF FluentAPI 0..1 から * へのマッピング

EF 4.0 FluentAPI CTP5 で 0..1 から * への関係をマップするにはどうすればよいですか? このエラーが発生し続けます

従属ロールのすべてのプロパティは null 非許容であるため、プリンシパル ロールの多重度は '1' でなければなりません。

そして、私はそれを修正する方法を正確に知りません..

私のコードは次のようになります

マッピングの場合、コードは次のようになります

また、のみを持つことは可能ですか

それ以外の

データベースでは、FKfield の名前は「ParentpID」ではなく「Parent」です。この場合、マッピングはどのようになりますか?

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

c# - 流暢なインターフェイス ビルダーへの分岐の追加

パイプとフィルターシステムを作成できる小さなフレームワークがあります。私は流暢なインターフェースを使ってパイプとフィルターシステムを構築するという考えを持っていました:

示されているコードは期待どおりに機能します。システムの「写真」は次のとおりです。

現在、1 つの出力ではなく 2 つの出力を持つ一種のフィルターがあります。私はそれを呼びますbifurcation。を使用したシステムの例を次に示しますbifurcation

私はこのようなものを実装したいと思います:

しかし、私はそれを正しく理解できないようです。これは可能ですか?最初の例では、PipeFilterBuilder(によって返されるPipeFilter.StartBuild()) が必要でした。この 2 番目の例では、他の種類のビルダーを作成してミックスに取り入れようとしましたが、それは役に立たないようです。

言い忘れましたが、アイデアは、分岐を好きな場所にネストできるということです。つまり、枝でいっぱいの「木」を得ることができます!

誰でもこれで助けになれますか?