問題タブ [castle-windsor]
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 - Castle Windsor: メソッドではなくファクトリ プロパティにコンポーネントを接続する方法
次のコンポーネントがあります
タイムスパンはプロパティ ISettings.MyTimerFrequency によって提供される必要があります。
これをウィンザーコンテナxmlに接続するにはどうすればよいですか? 私はこのようなことができると思いました:
MyTimerFrequency は、ファクトリ機能がメソッドを予期している場合のプロパティであるため、エラーが発生します。
ここに簡単な解決策はありますか?全体に間違った方法でアプローチしていますか?
編集:間違いなく解決策があります。以下の私の回答を参照してください。
c# - Castle Windsorコンポーネント登録のコンテキストでの「ForwardedTypes」とは何ですか?
主題が言うように、本当に!彼らは何をしますか?
c# - 特殊なサービスタイプもある場合、Castle Windsorの流暢なインターフェイスを使用してコンポーネントをデコレータチェーンに登録しますか?
IRepositoryに基づいてデータアクセス用のデコレータチェーンを実装しようとしています。データアクセス(現時点ではメモリ内リストのみ){1}を実行するリポジトリがあり、検証{2}を実行するリポジトリがあります。その上、私は自分のリポジトリの特殊化であるIUsersRepository {3}を持っています。これは、ベースインターフェイスで別のメソッドを定義します。最新のトランクリビジョン5376で実行しています。
流暢なインターフェースを使用してコンポーネントを登録できるようにしたいのですが、XMLを介して、innerRepoとして使用するサービスのキーを指定することはできますか?もしそうなら、どのように?( XML構成の例については、Bitter Coder Decoratorチュートリアルを参照してください)。他のことは別として、登録の順序に依存する必要はありません。
私はこのブログ投稿をフォローしています。
コンテナにIRepository{4}を要求すると、デコレータチェーンを機能させることができました。データアクセスの前にValidatingRepositoryメソッドが呼び出されるのがわかります。しかし、コンテナにIUserRepositoryを要求した場合、それを機能させることができませんでした(InvalidCastExceptionが発生します-これは予期されていると思いますが、回避可能ですか?)。
サービスで1つのdecorated-repoリポジトリと1つのspecialized-methodsリポジトリを使用する必要がないようにしたいと思います。これはエラーが発生しやすいと私を襲います。現時点では、私の専門的なメソッドはすべて、さまざまな基準でエンティティをフェッチすることと関係があります-Getメソッドに分離基準を取得させることができると思います-これにより、インターフェイスに1つだけを設定でき、特殊なインターフェース。NHibernateを確実に使用することに決めていないため、許可されていないことを除いて。おそらく、IRepo.GetをデリゲートまたはIQueryableにした場合はどうでしょうか。何か案は?私は今朝ずっと頭をぶつけてきました、そして私がトンネル視力を持っていても驚かないでしょう、そして別の、より良い、アプローチがあります。どんな提案も歓迎します!
{1}-{4}は、utilitybaseのコピー/貼り付け機能で確認できます。
.net - Castle Windsor config からプロパティを読み取る/解決する方法
私は、接続文字列のようなプロパティも.Net構成セクションの下に保持されている城のxml構成をたくさん持っています。
コンテナを使用してプロパティを読み出せるようにしたいのですが、それを行うメカニズムがわかりません。
すなわち
...
コンポーネントの依存関係があるため、明らかにプロパティがあります。コンポーネントは解決できますが、プロパティは解決できません。
確かに、注入されたプロパティ キャッスルを読み取るためだけにコンポーネントを新しく作成することも、名前と値のペアを保持するためだけに特化したコンポーネントにすべてのプロパティをラップすることもできます。しかし、単純な container.resolve("property.connectionstring") 表記があると思っていたでしょう。
*編集マークダウンはあまり得意ではありません。上記はxmlセクションであることが意図されていました。
castle-windsor - キャッスルウィンザー:xml構成でTypeをコンストラクタプロパティとして使用する方法は?
私は次のものを持っています:
TypeUser:ITypeUser
{
public TypeUser(Type usedType){..}
}
Windsor config xml で Type パラメータを設定するにはどうすればよいですか?
c# - C# プロキシと var キーワード
この質問は、私の以前の投稿に関連しています。基本的に、DAOをエンティティに挿入したい
ここで、DAO にカスタム メソッドがある場合は、基本的にそれらをエンティティ オブジェクトにラップする必要があります。したがって、IUserDAO.Register() がある場合は、それをラップするために User.Register() メソッドを作成する必要があります。
より良いのは、DAO からのメソッドが User オブジェクトに動的に割り当てられるプロキシ オブジェクトを作成することです。したがって、次のようなものがあるかもしれません:
これは、User エンティティをネットワーク上でのデータ転送に適した非常に馬鹿げたクラスとして保持できることを意味しますが、魔法のように多数の DAO メソッドを与えることもできます。
しかし、これは私の快適ゾーンから非常に外れており、これを達成するには何が必要なのだろうかと思いました。Castles Dynamic プロキシを使用できますか? また、C# コンパイラはこれに対処し、動的に追加されたメソッドについて知ることができますか?
これがナンセンスである場合は、遠慮なくお知らせください。
編集:
そのために必要なことは、コンパイル時に DAOProxyService.Create() を User オブジェクトを返すものとして何らかの形で宣言することです。これは、ジェネリックで行うことができます。
私が返したいのは User オブジェクトではなく、UserDAO メソッドが動的に追加された User オブジェクトです。このクラスはどこにも定義されていないため、コンパイラはそれをどうするかわかりません。
私が本質的に返しているのは、次のような新しいオブジェクトです: User : IUserDAO なので、必要に応じてキャストできると思います。しかし、これは面倒なようです。
私が探しているのはこれに似ているようです: Mixins
asp.net-mvc - ASP.NET MVC ベータ 1: DefaultModelBinder は、無関係な要求間でパラメーターと検証状態を誤って保持します
デフォルトのモデル バインディングを使用してフォーム パラメータをアクションのパラメータである複雑なオブジェクトにバインドすると、フレームワークは最初のリクエストに渡された値を記憶します。つまり、そのアクションへの後続のリクエストは最初と同じデータを取得します。パラメーター値と検証状態は、関連のない Web 要求間で保持されます。
これが私のコントローラーコードです(service
アプリのバックエンドへのアクセスを表します):
私の .aspx ビュー ( ViewPage<RunTime
> として厳密に型指定されたもの) には、次のようなディレクティブが含まれています。
これは、モデルのプロパティを自動バインドするためDefaultModelBinder
のクラスを使用します。
ページにアクセスし、有効なデータを入力します (例: time = 1)。アプリは新しいオブジェクトを時間 = 1 で正しく保存します。次に、もう一度押して、別の有効なデータ (時間 = 2 など) を入力します。ただし、保存されるデータは元のものです (たとえば、時間 = 1)。これは検証にも影響するため、元のデータが無効であった場合、今後入力するすべてのデータが無効と見なされます。IIS を再起動するか、コードを再構築すると、永続化された状態がフラッシュされます。
この問題は、独自のハードコーディングされたモデル バインダーを作成することで解決できます。その基本的な単純な例を以下に示します。
何か不足していますか?最初のデータが 1 つのブラウザーに入力され、2 番目のデータが別のブラウザーに入力された場合に問題を再現できるため、ブラウザー セッションの問題ではないと思います。
.net - Castle、AOP、および .NET でのログ記録
AOP、Castle、および .Net アプリケーションへのログインの使用に関するチュートリアルまたはサンプル プログラムはありますか? 私はそこにピースを見つけましたが、より完全な絵を描くのに役立つ何かを探しています.
ありがとう -ブライアン
.net - DI- Type 型の動的パラメーター。ここで、type は親オブジェクトの型です。
クラスの 1 つに注入する必要がある依存関係があります。この依存関係は のライフスタイルになりTransient
ます。次に、 type の依存関係がありType
ます。この型は、元のクラスの型である必要があります。どうすればこの登録を行うことができるか、誰かが知っているかどうか疑問に思っていました.
例を参照してください:
Container.Resolve
これで、必要なときにいつでも電話して、手動でCustomer
注入できることがわかりました。Register
しかしRegister
、ほとんどのクラスに注入する必要があるため、これは実際には実現可能ではありません。したがって、configまたはを介してそれを行う方法が必要container.Register
です。
castle-windsor - Windsor を使用してアプリ設定を挿入する
Windsor コンテナを使用して、appSettings エントリの値を (app.config または web.config から) サービスに挿入するにはどうすればよいですか? ウィンザー プロパティの値をサービスに挿入する場合は、次のようにします。
ただし、私が本当にやりたいのは、#{importantIntegerProperty}
次のように定義される可能性のあるアプリ設定変数から で表される値を取得することです。
編集:明確にするために。これはウィンザーでは本来不可能であり、スライダーハウスルールが参照しているデビッド・ヘイデンの記事は、ウィンザーではなく、実際には彼自身の (デビッド・ヘイデンの) IoC コンテナーに関するものです。
私は確かにこの問題を抱えた最初の人ではないので、他の人がこの問題をどのように解決したかを知りたいですか?