問題タブ [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.
delegates - Castle.DynamicProxy2 デリゲート型のプロキシを生成
デリゲート タイプのプロキシを作成し、DynamicProxy2 に追加のインターフェイスを実装し、生成されたデリゲートへの呼び出しをインターセプトする方法はありますか?
デリゲート型が封印されているため、私が通常プロキシを生成する方法は例外をスローします。
.net - LinFu.DynamicProxy と Castle.DynamicProxy の違いは何ですか?
私が取り組んでいるライブラリに、動的プロキシが必要になるロジックを追加しようとしています。これら 2 つのライブラリを実稼働環境で使用しているユーザーからアドバイスをもらいたいと思います。一方が他方よりも優れているか、他のものに切り替えなければならない欠点があったかなど。基本的に、ライブラリの経験を教えてください。答えは、どちらを使用するかを決定するのに役立ちます。
- 編集 -
私が開発しているライブラリは Mono をサポートすることを忘れていました。したがって、2 つのライブラリとそれらの Mono のサポートについて共有できる知識があれば、それも素晴らしいことです。
c# - Castle Windsor: 特定のインスタンスのプロキシを取得する方法は?
プロジェクトでキャッスル ウィンザーを使用しています。一部の登録済みコンポーネントが傍受されました。コンポーネントはインターフェイスを介して登録されるため、Castle Windsor はインターフェイス プロキシを作成します (Castle Windsor はインターフェイスを実装するスタンドアロン型を作成し、コンポジションを使用して実際の実装に委譲します)。残念ながら、プロキシがバイパスされるため、インターフェイスの実際の実装内でメソッドを実行することはできません。
実際の実装内で実際の実装を表すプロキシのインスタンスを取得する方法はありますか?
これが私が達成したいことの例です。Get メソッドを常にインターセプトしたい。これは私の製品コードではなく、デモンストレーション用に考案されたものであるため、このサンプルをリファクタリングする別の方法を提供しないでください。
フィールド _this をプロキシのインスタンスに設定するにはどうすればよいですか?
敬具
オリバー・ハナッピ
PS: これは実際の例です。
一時的なプレゼンテーション モデルを解決しています。一時的なビューが注入されます。ビューはプレゼンテーション モデルについて知る必要があるため、プレゼンテーション モデルは IView.SetModel(this) を呼び出して、そのプレゼンテーション モデルについてビューに知らせます。
問題は、解決された IPresentationModel はプロキシですが、SetModel メソッドは実際の実装しか取得しないことです。したがって、ビューがプレゼンテーション モデルのメソッドを呼び出すとき、インターセプターは起動されません。
これまでに見つけた唯一の解決策は、プレゼンテーション モデルを解決した後に、ビューのプレゼンテーション モデルを手動で設定することです。
私は、この解決策は実際にはあまりうまく解決されていないと思います。
c# - プロキシ オブジェクトの基本型を取得する
Castle DynamicProxy を使用しており、ViewModels は次のようなプロキシです。
ただし、ビューモデルのプロキシは次のようになります。
{Name = "IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98" FullName = "IRootViewModelProxyffecb133f590422098ca7c0ac13b8f98"}
プロキシされている実際の型の実際の型または名前空間を取得したい。これを行う方法はありますか?MyApplication.ViewModels.MyViewModel タイプを返すものが必要です。concreate クラスをプロキシとして使用している場合、BaseType はプロキシされている実際のクラスを返しますが、インターフェイスを使用する場合、BaseType は System.Object を返します。
c# - 城の動的プロキシの作成
クライアントとサーバーの間にレイヤーが配置される設計を実装しており、サーバーから取得したオブジェクトはすべて、透過的なプロキシでラップしてクライアントに渡すことで、オブジェクトの変更内容を追跡できます。 、そのため、保存するときは、変更された情報のみを送信します。
城の動的プロキシである linfu を調べましたが、プロキシ タイプを生成できますが、既存のオブジェクトを取得してラップすることはできません。
これらのフレームワークでそれが可能かどうか、またはこれを可能にする他のフレームワークがあるかどうか疑問に思っています...
c# - 2.1 での NHibernate Proxy Validator の変更
誰かが次のことを理解するのを手伝ってくれませんか:
以前のバージョンの NHibernate (2.0.1) では、次のプロパティが検証され、キャッスル プロキシと互換性があります。
ただし、2.1 では、タイプが 'public/protected virtual' または 'protected internal virtual' である必要があるというエラーが表示されます。プロパティを「保護された内部」でマークすると、プロパティが他のアセンブリの継承された型に公開されるため、これには問題があります(実質的に保護または内部)。これは以前は要件ではなかったので、現在課すのは少し悪い要件のように感じます。
なぜこの要件が現在あるのか、何を強制しようとしているのかを誰かが説明してください.
この制限が完全に必要ではなく、これらのタイプのプロパティが DB プロパティにマッピングされないことが 100% 確実である場合は、Castle プロキシ ファクトリと 2.0.1 の Type Validator を使用して、独自の Mashup ByteCode プロバイダを作成するつもりです。しかし、私は間違いなくどんなアドバイスにもオープンです。
c# - PostSharp とキャッスル ダイナミック プロキシの違いは何ですか?
これらのライブラリの主な違いは何か、機能と機能がどのように異なるのか疑問に思っています。
Google クエリで見つけられるよりも多くの情報を期待しています...
c# - Hibernate オブジェクトでの動的プロキシの使用
Castle.DynamicProxy2 を使用して、NHibernate 永続クラス内のコードをクリーンアップしようとしています。これがその単純なバージョンです。
ペットクラス:
そしてそのマッピングファイル:
Pet クラスのインスタンスを監査する必要があります。通常、プロパティ Name と Age は自動プロパティではなく、値の変更を記録するロジックが含まれます。現在、プロキシを使用してプロパティ セッター内に監査ロジックを挿入することを考えています。そのために、Auditor IInterceptor を作成しました。
Castle.DynamicProxy2 を使用して Pet クラスの監査済みインスタンスを作成するのは簡単です。
ここで問題が発生します。Pet は永続化されるため、システムは NHibernate を介してフェッチされた Pet のインスタンスで動作する必要があります。私がやりたいことは、NHibernate が次のように Pet プロキシのインスタンスを自動的に返すことです。
私はそれを回避するためにこのようなことを考えました:
キャッシュされProxyHelper.GetProxyType<Pet>()
た Pet プロキシ タイプを返します。主な欠点は、このソリューションが一般的なリスト (例: IList<Pet>
) では機能しないことです。私がクリーンアップしようとしている既存のシステムは、それらを広範囲に利用しています。
だから、誰かが回避策や、私がやっていることが賢明かどうかについての洞察を持っていることを願っています.
どうもありがとう、
カルロス
castle-windsor - プライベート/保護された方法のためのCastleWindsorInterceptor
キャッスルウィンザーのインターセプターがメソッドをインターセプトするためには、そのメソッドがパブリックであると宣言する必要があるというのは本当ですか?
nhibernate - Win2003 サーバー上の .Net 3.5 SP1 での Castle DynamicProxy2 の問題
私は mvc + nh asp.net アプリケーションを持っています。私の開発マシン (win 7 Ent) ではすべて正常に動作しますが、Win 2k3 (2 つの異なる vm と 1 つの物理マシンを試しました) に展開すると、次のエラーが発生しました..
誰でも助けることができますか?この問題を説明できません (同じビルドを試したので、マシン構成の問題だと思います)。
アセンブリ 'DynamicProxyGenAssembly2、バージョン = 0.0.0.0、カルチャ = ニュートラル、PublicKeyToken = null' からのタイプ 'CustomerProxy75950979a2a048e889584c21696f7f1b' の派生メソッド 'set_ID' はアクセスを減らすことができません
[TypeLoadException: アセンブリ 'DynamicProxyGenAssembly2、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' からの型 'CustomerProxy75950979a2a048e889584c21696f7f1b' の派生メソッド 'set_ID' は、アクセスを減らすことができません。] System.Reflection.Emit.TypeBuilder._TermCreateClass(Int32 ハンドル、モジュール module) +0 System.Reflection.Emit.TypeBuilder.CreateTypeNoLock() +915 System.Reflection.Emit.TypeBuilder.CreateType() +108 Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType() +48 Castle.DynamicProxy. Generators.ClassProxyGenerator.GenerateCode(Type[] インターフェイス、ProxyGenerationOptions オプション) +3821 Castle.DynamicProxy.DefaultProxyBuilder.CreateClassProxy(Type classToProxy、Type[] additionalInterfacesToProxy、ProxyGenerationOptions オプション) +84 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy、Type[] additionalInterfacesToProxy、ProxyGenerationOptions オプション、Object[] constructorArguments、IInterceptor[] インターセプター) +92 Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy、Type[] additionalInterfacesToProxy、IInterceptor[] インターセプター) +21 NHibernate。 ByteCode.Castle.ProxyFactory.GetProxy(オブジェクト ID、ISessionImplementor セッション) +283