問題タブ [conditional-binding]
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.
parameters - ninject2.0のパラメーターベースのバインディング
渡されたパラメータに基づいて、ninjectで条件付きバインディングを使用したいと思います。私は以下のようなものを持っています:
そして今、私はITargetインターフェースをインスタンス化する必要があります:
適切なバインディングを定義するのに問題があります。私は次のことを試しました:
しかし、渡されたパラメータの値を取得する方法がわかりません。IContextインスタンスをGetValueメソッドに渡す必要がありますが、IContextの有効なインスタンスを取得する方法がわかりません。それとも、私のタスクを達成するためのより良い方法がありますか?
編集:BindingMetadataは私の問題を解決するためのより良い方法です。詳細については、Ninject2.0を使用したコンテキストバインディングを参照してください。
よろしく
parameters - Ninject 2.0 によるコンテキスト バインディング
Ninject 1.0 では、次のバインディング定義がありました。
そのようなバインディングを考えると、私は電話をしました:
最初の呼び出しは Target1 のインスタンスに解決され、2 番目の呼び出しは Target2 のインスタンスに解決されました。
これを Ninject 2.0 に変換するにはどうすればよいですか?
c# - 条件付きでデータをバインドするにはどうすればよいですか?
データを条件付きでコンボ ボックスにバインドするにはどうすればよいですか? デフォルトでIDを表示するコンボボックスがあります。ただし、ユーザーがチェック ボックスをオンにすると、ディスプレイには ID と名前の両方が表示されます。たとえば、「OO1: サム」。デフォルトの ID が正しく表示されています。チェックボックスの「IsChecked」状態に基づいて ID と NAME の両方を表示する方法がわかりません。
WPF および C# .Net 3.5
c# - プロパティが null でない場合のみの条件付き依存性注入バインディング
これは、基礎となるデータ ソースにアクセスする際に現在のユーザーになりすます必要があるデスクトップ アプリケーションです。
親オブジェクトのプロパティが null でなくなるまで依存関係をバインドしないように Ninject に指示するにはどうすればよいですか?
- アプリケーションは起動時にユーザー認証を強制します
- 認証されると、現在のユーザー資格証明への参照が、
IMembershipService
- 基になるデータソースにアクセスするには、ユーザーを認証する必要があるため、commection 文字列が偽装する資格情報を示します。
私は実際にNHibernateを使用しており、認証時に提供されたユーザー資格情報に基づいて接続文字列を動的に作成する必要があります。
だから私は達成したいと思います:
は にSessionProviderFactory
依存するためIMembershipService.CurrentUser
。
これが世紀のデザインではないかもしれないことは承知していますが、出荷可能な製品を提供できるように、今のところこのように機能する必要があります. 後でリファクタリングできることを嬉しく思います。
セッションファクトリープロバイダー
セッションプロバイダー
IMembershipService.CurrentUser
実際のところ、アプリケーションの起動時に をインスタンス化することはできません。ユーザーは最初にシステムに対して認証する必要があるため、ActivationException
.
ISession のアクティブ化中にエラーが発生しました
一致するバインディングは利用できず、タイプは自己バインディング可能ではありません。
アクティベーション パス:
3) InquiriesRepository 型のコンストラクターのパラメーター セッションへの依存関係 ISession の注入
2) InquiriesManagementPresenter タイプのコンストラクターのパラメーター リポジトリへの依存関係 IInquiriesRepository の注入
1) お問い合わせのお願い管理プレゼンター
提案:
1) ISession のバインディングを定義したことを確認します。
2) バインディングがモジュールで定義されている場合は、モジュールがカーネルにロードされていることを確認します。
3) 誤って複数のカーネルを作成していないことを確認してください。
4) コンストラクター引数を使用している場合は、パラメーター名がコンストラクターのパラメーター名と一致していることを確認してください。
5) モジュールの自動ロードを使用している場合は、検索パスとフィルターが正しいことを確認してください。
では、どうすれば作れますか?
デザインの改善提案は大歓迎です。しかし、うまく機能するためにはそれが必要であることを覚えておいてください。次の配信のためにリファクタリングします。
編集
おそらくコンテキスト/スコープ依存性注入を使用できるようです。
How to use the additional Ninject Scopes of NamedScope
それでも、私のシナリオでここで機能させる方法がわかりません。
アップデート
読んでみると、おそらく条件付きバインディングよりもコンテキスト バインディングの方が私のニーズに適しているのではないかと疑い始めています。
何かご意見は?
条件付きバインディングに関連する各記事は、条件付き状態バインディングではなく、条件付きタイプ バインディングについて述べています。
私のシナリオでは、それが条件付きの状態バインディングであると具体的に信じているため、コンテキストバインディングについての考えです。
次に、2 つのバインディングがあります。
- ユーザー認証前
- ユーザー認証後
ISessionFactory
したがって、アプリケーションの起動時にのインスタンスが必要ないため、おそらく遅延注入を使用する必要があります。これにより、問題が解決します。
私はここで少し損をしています...
protocols - 条件付きバインディングのバインドされた値は、オプションのタイプである必要があります
私はプロトコルを定義しています:
およびそのプロトコルに準拠するクラス
Thing クラスが Usable プロトコルに準拠しているかどうかをプログラムでテストしたいと考えています。
しかし、私はエラーが発生します
私が試したら
エラーが発生します
@objc
次に、プロトコルに追加してエラーを取得します
その時点で?
の後に追加するas
と、最終的にエラーが修正されます。
「Advanced Swift」2014 WWDC ビデオと同じように、@objc 以外のプロトコルを使用した条件付きバインディングでこの機能を実現するにはどうすればよいですか?
swift - [String] へのオプションのバインド (文字列: AnyObject)
取得した JSON オブジェクト/辞書がAFNetworking
あり、条件付きでキーを文字列の配列にアンラップしたいと考えています。
次のエラー メッセージが表示されます(String : AnyObject) is not convertible to [String]
。フレームワークから出person
て[String : Any]
くるので、型キャストできないと思います。どんなアイデアでも大歓迎です。[String : AnyObject]
AFNetworking
string - 条件付きバインディングの初期化子には、HTTPCookieStorage の「文字列」ではなく、オプションの型が必要です
このエラーが発生する理由はわかりませんが、Swift 2 に更新したときに発生します。
let token = cookie.value {の場合、エラーが発生します
条件付きバインディングの初期化子には、「文字列」ではなく、オプションの型が必要です
swift - 単一の Switch ステートメントでのパターン マッチと条件付きバインド
if
この//はしごを switch 文として書く方法はありますelse if
か?else
これが私の試みです:
正しいパスが正常に選択されますが、 //はs
まだタイプです。チェックはそれらをキャストする際には何の効果もありません。これにより、使用前にキャストを強制する必要があります。i
b
Any
is
as!
タイプをオンにして名前にバインドする方法はありswitch
ますか?