問題タブ [castle-dynamicproxy]
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 - その場でクラスとプロパティに属性を追加する
その場でクラスに属性を追加できるものは城にありますか?
wcf サービスでデータ コントラクトとして使用したいプロジェクトに dto があります。追加する必要があります
属性をクラスに追加してから
各プロパティに。
サービス層でクラスを複製し、リストを新しいタイプの新しいリストにコピーすることもできますが、それは面倒です。dynamicproxy またはどこかに何かがあるに違いありませんか?
w://
c# - CastleDynamicProxyインターフェイスプロキシの生成
WindsorContainerを持っています。
にInterceptor属性を持つILazyComponentLoader
(重要な場合)とインターフェイス( )があります。ISomething
ProxyGenerator.CreateInterfaceProxyWithoutTarget
を介してインターフェイスを解決するときにWindsorを使用して、すべての動作をオンデマンドで外部に実装できるcontainer.Resolve<ISomething>()
ようにします。DynamicImplementationInterceptor
ドキュメントでこの正確なシナリオを見つけることができないようです...ISomething
を使用して登録する場合Component.For<ISomething>()....
、この動作が必要であることをどのように指定しますか?(現在、タイプが抽象またはインターフェイスであるというエラーが発生するため、インスタンス化できません...)
ありがとう!
c# - インターフェイスプロキシの生成
クラスの問題に遭遇しました。次のようなクラスがあります。
カスタムビューは、ベースIViewインスタンスから継承します。IMyViewまたはISomeView(シナリオによって異なります)を実装するカスタムクラスをその場で作成してモデルにアクセスする必要がある状況に遭遇し、CastleDynamicProxyなどのツールを使用してそれを実行できると考えていました。しかし、どこから始めればよいのかよくわかりません。カスタムIMyViewまたは他のクラスインスタンスをその場で作成できる必要があります。
ありがとう。
.net - Castle Windsor DynamicProxy Interception IInvocation ドキュメント
Castle Castle.DynamicProxy.IInvocation での違いは何ですか
ドキュメントを読みましたが、特に最初の 2 つの違いがわかりません。
Method
実際に登録された型のメソッドの MethodInfo だけだと思いますか?
structuremap - ストラクチャーマップで傍受を行う
構造マップを使用して属性ベースのインターセプトを実行しようとしていますが、最後のルーズエンドを拘束するのに苦労しています。
アセンブリをスキャンするカスタムレジストリがあり、このレジストリで次のITypeInterceptorを定義しました。その目的は、指定された属性で装飾されたタイプを照合し、照合された場合はインターセプターを適用することです。クラスは次のように定義されます。
Castle.CoreのDynamicProxyを使用してインターセプターを作成していますが、問題は、CreateInterfaceProxyWithTarget(...)呼び出しから返されたオブジェクトが、構造マップでターゲットインスタンスの作成をトリガーしたインターフェイス(つまり、IOrderProcessor)を実装していないことです。上記の例では)。IContextパラメーターがこのインターフェースを明らかにすることを期待していましたが、具体的なタイプ(つまり、上記の例ではOrderProcessor)を把握することしかできないようです。
ProxyGeneratorを呼び出して、すべてのインターフェイスをターゲットインスタンスとして実装するインスタンスを返すか、構造マップから要求されたインターフェイスを取得するか、その他のメカニズムを使用して、このシナリオを機能させる方法についてのガイダンスを探しています。
castle-windsor - DynamicProxy によって動的に作成されたキャッスルへのコンポーネントの登録
そのため、Castle DynamicProxy (バージョン 2.2) とインターセプターだけを使用して特定のコンポーネントを作成するソリューションを構築するために、しばらく懸命に取り組んできました。これらすべてが終わったときに、これらのコンポーネントをウィンザー コンテナーに登録する必要があることに気付きました。これは可能ですか、それとも私の仕事は無駄になりましたか?
私の問題を説明するために、2 つの城の構成を作成します。最初のものは機能しますが、2 つ目は機能しません。
最初の構成 (これはしばらくうまく機能しています):
2 番目の構成 (type 属性に何を入力すればよいかわかりません。これがないと機能しません):
したがって、作成した構成でファクトリ機能を登録し、次にファクトリを登録してから、「ILoader」コンポーネントを登録します。「LocalFactory」は ILoader コンポーネントの実際のタイプを作成しますが、「RemoteFactory」は動的プロキシを使用して ILoader コンポーネントを作成し、ターゲットなしでプロキシを作成します。つまり、ProxyGenerator.CreateInterfaceProxyWithoutTarget メソッドを使用するため、基になるクラスはありません。
では、2 番目の構成に従ってコンポーネントを登録する希望はありますか?
編集: 残念ながら、流暢な構成 API を使用することは、現時点ではオプションではありません。私の質問を絞り込むために、XML構成を使用してこれを達成することは可能ですか?
.net - ターゲットのないインターフェイスのキャッスル ウィンザー プロキシ
私は を持ってWindsorContainer
いIModelInterceptorsSelector
ます。これは、実装のないコンポーネント (たとえば、すべての動作が によって動的に処理される) を除いて、うまく機能しますIInterceptor
。
インターフェイスのみでコンポーネントを解決しようとすると、次のようになります。
しかし、登録時にインターセプターを手動で指定すると、問題なく動作します。これはウィンザーのバグですか、それとも何か間違っていますか?
再現するコードはかなり単純です。
ありがとう。
linq-to-sql - Castle Dynamic Proxy、おそらく AutoMapper を使用して、すべての LINQ-to-SQL エンティティをインターセプトする必要がある
DB に格納するときに、特定のフィールド セットの値を暗号化する必要があります。LINQ-to-SQL を使用しています。
私のアプローチ: DB に書き込まれる前に、エンティティ内の一致するプロパティの値を透過的に暗号化します。
関連するプロパティをセッターで暗号化し、ゲッターで復号化するキャッスル ダイナミック プロキシを使用したインターセプターを既に作成しました。これが私がそれを使用する方法です:
これですべて問題なく動作しますが、各 SecretEntity インスタンスを動的プロキシで手動でラップする必要はありません。だから私はこれを自動化する方法を探しています.SecretEntityのインスタンスを取得するたびに、それはすでにプロキシにラップされています.
何らかの方法で LINQ-to-SQL DataContext にフックして、プロキシを返す方法はありますか?
私は MVC を使用しているので、ビュー モデルを使用してデータを表示し、AutoMapper を使用してエンティティとビュー モデルの間を行き来します。したがって、LINQ-to-SQL DataContext アプローチが機能しない場合、マッピング ルーチンにフックし、エンティティをビュー モデルにマッピングする前にプロキシでラップすることができるのではないかと考えていました。そこで、AutoMapper を使用しているときに BeforeMap というメソッドを見つけて非常に興奮しました。だから私は試しました
しかし、運がありません。BeforeMap メソッドの実行が終了すると、「se」参照をプロキシに再割り当てしても効果がないためだと思います。
新しい SecretEntity を作成するとき、Ninject を使用してプロキシ ラッピング プロセスを自動化できましたが、Ninject は、DataContext から取得した既存のエンティティに対しては機能しません。
私が Castle Dynamic Proxy を使って歩いた時間はほんの数時間で、AutoMapper は私のことをよく知っているわけではありません。だから、誰かが私にどこを見るべきかを簡単に教えてくれることを願っています.
ありがとうございました。
編集
完全を期すために、興味のある人のためにインターセプターの実装を追加すると思いました。Castle Dynamic Proxy についてよく知らないので、インターセプトを処理し、それがゲッターかセッターかなどを検出するためのより良い方法があると確信しています。
c# - 基本クラスの問題はありません。この特定のケースで Castle.DynamicProxy Mixin を使用するには?
使用しなければならないサードパーティ製の不適切な設計のライブラリがあります。
動作するすべての種類の型があり、それらをSomeType1、SomeType2などと呼びます。
これらの型はどれも共通の基本クラスを共有していませんが、すべてが異なる戻り値の型を持つ Value という名前のプロパティを持っています。
私がやりたいのは、このクラスを Mixin できるようにすることだけです。そのため、concreate 型が何であるかを気にせずに、戻り型が何であるかを気にせずに呼び出すことができます (使用できますsomeType1Instance.Value
) 。
だから私のコードは現在: someType2Instance.Value
object
問題は、オブジェクトの辞書を取得するという事実のために、実行時まで T が何であるかわからないことです。
辞書を反復処理し、リフレクションを使用して実行時に SomeWrapperType を作成できますが、それは避けたいと思います。
SomeType の concreate 型を ISomeType に混在させるにはどうすればよいですか?
V 型パラメータが何であるかを知るにはどうすればよいですか? (C++ のように typedef と decltype があればいいのに)
リフレクションの使用を最小限に抑えて、これらのクラスとインターフェイス/基本クラスを混在させるにはどうすればよいですか?
.net - Castle Windsor InternalsVisibleTo Silverlight
SL v2.5.1.0 に Castle Windsor を使用しています。私はそれを内部クラスにプロキシします(インターフェースはもちろんパブリックですが、実装は内部であるため、消費者はインターフェースのみを認識します)。
内部クラスを持つアセンブリで次の属性を使用しています
完全な .NET 4.0 モードでは、.NET 4.0 Castle アセンブリを使用すると、これは正常に機能し、私の型は問題なくプロキシされます。Silverlight では、Silverlight Castle アセンブリを使用すると、次のようになります。
また、問題のトラブルシューティングでは、以下を追加しても違いはないようです...:
また、SL で動的にホストされるアセンブリの名前が実際には DynamicProxyGenAssembly2 であることも実行時に確認しました。
何か案は?ありがとう。
編集:
私が思う問題を見つけました:
Castle for .NET 4.0 には次のものがあります。
DefaultProxyBuilderで...そしてSL 4には
これは城のソースで修正できるものですか? または、DefaultProxyFactory をサブクラス化する必要がありますか?