問題タブ [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.
c# - アスペクト指向プログラミングの適用
私は、セキュリティ、ロギング、検証などの分野横断的な問題に対して、いくつかの基本的な AOP スタイルのソリューションを使用してきました。Boo ベースの DSL を使用してすべてを適用し、コードを属性からきれいに保つことができるため、私のソリューションはCastle Windsorと DynamicProxyを中心に展開しています。 . 週末に、「より良い」ソリューションであるはずのPostSharpを調べるように言われました。私は PostSharp をざっと見てきましたが、属性の使用法に気が進まなかったのです。
両方のソリューションを試してみて、その経験を共有したい人はいますか?
inversion-of-control - ウィンザー コンテナのデコレータ パターンとして DynamicProxy を使用する
別のクラスのインスタンスへの呼び出しをインターセプトする動的プロキシを提供するためのウィンザーの使用と構成に関する情報を探しています。
私のクラスは、パフォーマンス上の理由から、コンテナによって長寿命のインスタンスとして保持される必要があるリソースを表しています。ただし、このリソースは使用できない状態に移行する場合があり、更新が必要になります。クライアント コードで処理する必要がないように、コンテナーでこれを処理する必要があります。これを行うために独自のファクトリを作成できます。別のファクトリ クラスを作成する必要がないので、Windsor 登録のクールネスがあるかどうかを知りたいです :)
問題を示す擬似コードを次に示します。
私の RealResourceInterceptor クラスのようなものを実装する方法と、それを使用するようにコンテナを構成する方法はありますか? ありがとう!
castle-windsor - Windsor MixIn はシングルトンですか?
動作するためにいくつかの状態を必要とする MixIn があります。
そのまま登録してます..
container.Resolve(of ICat) を呼び出すと、IMixin も実装する ICat のプロキシが返されます。
ただし、container.Resolve(of ICat) を再度呼び出すと、ICat の新しいプロキシが取得されますが、MyMixin は同じインスタンスです。(IMixin を作成する方法をコンテナに伝えていないので、これは理にかなっています)
したがって、コンポーネントのライフスタイルが一時的であっても、IMixin はシングルトンです。
コンポーネントの MyMixIn の新しいインスタンスを作成するように、Fluent Interface を使用して Windsor に指示するにはどうすればよいですか?
target - Castle DynamicProxy2:インターセプター内にターゲットを取得しますか?
Castle DynamicProxy2を使用して、ディクショナリからフィールドを取得するためのインターフェイスを「タックオン」しています。たとえば、次のクラスがあるとします。
次のインターフェイスをインターフェイスプロキシとして使用して、Fieldsディクショナリから「Name」値を抽出したいと思います。
インターセプターから、「ターゲット」DataContainerを取得し、「Name」値を返します。
根底にあるターゲットを取得する方法についての考え
注:これは、私が持っている質問の前後関係を確立するために使用している不自然な例です。
debugging - Moq で作成された模擬インスタンスを取得すると System.BadImageFormatException がスローされるのはなぜですか?
この質問は別の質問に関連している可能性があり、確かに System.BadImageFormatException が発生します。多分それは同じことですが、露出が異なりますか?
私は次のコードを持っています:
次に、次のように Moq を使用して IFooRepo をモックするテストがあります。
上記のコードは、Visual Studio 2008 でテストをデバッグする場合を除いて正常に実行されます。これは、 Ayende Rahien が投稿したものと似ているでしょうか?
現在の回避策は、IFooRepo の偽物を実装することですが、この種のシナリオで悪いイメージが生成される理由について知りたいのですが、修正はありますか? System.Reflection.Emit はバグがありますか? または、自分のコードに明らかな何かが欠けていますか?
編集: GetFoo() の誤った署名を投稿しました。問題を正しく再現する署名を GetFoo<T, F>() に修正しました。GDR をインストールすると、この問題は解決しません。
編集: F の制約に型パラメーター T が含まれている場合、 BadImageFormatException が発生するようです。しかし、たとえば に変更するとwhere F : class, new()
、すべてが期待どおりに機能します。
wcf - 動的プロキシとwcfシリアル化の問題を使用する一般的なIPropertyChangedNotifier
CastleDynamicProxyを使用して汎用IPropertyChangedNotifierを実装しました。ここでは、プロキシオブジェクトでセッター呼び出しをインターセプトして、ドメインオブジェクトのセッターでPropertyChangedイベントを発生させる必要がないようにします。
目的は、これらのプロキシオブジェクトを使用して、silevrlightアプリケーションでUIをバインドすることでした。
問題は、プロキシオブジェクトに[DataContract]がないために、WCFサービス呼び出しでプロキシオブジェクトのシリアル化が失敗することです。この問題を回避するには、インターセプターにインスタンスのコピーを保持し、このオブジェクトをシリアル化のために送信する必要がありました。IPropertyChangedNotifier
その結果、コードが複雑になり、デバッグや理解が困難になりました。WCFのシリアル化の問題を解決して、サービス呼び出しでプロキシを送信するときに基本クラス(インスタンス)の[DataContract]属性を使用するようにシリアライザーに指示する簡単な方法はありますか。
c# - コンパイル時に型が不明な場合にジェネリックを使用する
プラットフォーム:C#2.0 WinForms
送信するタイプに応じて特定のデータマッパーのインスタンス化を提供するファクトリクラスがあります。コードは次のとおりです。
DynamicProxy2を使用して、DTOオブジェクトへのメソッド呼び出しをインターセプトしています。私のインターセプトメソッドでは、Invocation.TargetTypeの型を使用して上記のファクトリを呼び出そうとしています。ただし、これは例外を除いて戻ってきます。
タイプまたは名前空間名'invocation'が見つかりませんでした。
明らかにこれは、ジェネリックメソッドの呼び出しは、コンパイル時に理解していることから明示的に型を知る必要があるためです。明らかに、この場合はそれを行うことができず、すべてのDTOオブジェクトに対してswitchステートメントを実行することは絶対にありません。
それで、皆さんは戦略を提案したり、私が間違っていることを指摘したりできますか?私はこれを可能な限り一般的にして、すべてのオブジェクトと新しいオブジェクトに適合し、他のプロジェクトへのコードの移植性を実現できるようにしようとしています。
前もって感謝します!
c# - Castle.DynamicProxy2 と実行時のプロパティの追加
Castle.DynamicProxy2 を使用しており、プロキシを次のようにインスタンス化しています。
IEntityStatus の私のインターフェイスは次のようになります。
DTO のプロパティが変更されたときにイベントが DTO をダーティに設定できるように、実行時にそのプロパティを使用できるようにする必要があります。ただし、これはインターフェイスであり、明示的な実装がないため、これを行う方法について途方に暮れています。get メソッドと set メソッドのデリゲートを作成することは避けたいオプションです。それで、私が達成しようとしていることを達成する別の方法はありますか?
アクティブなすべての DTO のコレクションを設定でき、DTO の 1 つでプロパティ変更イベントが発生したときに、そのコレクションを更新して、この特定の DTO がダーティであることを示すことができることに気付きましたが、この情報を純粋な構文上の容易さのためのプロキシされた DTO の一部。
返信をお待ちしております!
.net - Castle DynamicProxyを参照せずにタイプが生成されたDynamicProxyであるかどうかを検出する方法は?
Castle DynamicProxy を使用していますが、Castle DynamicProxy を参照せずに Type がプロキシであるかどうかを検出する方法があるかどうか疑問に思っていましたか?
そのため、Castle DynamicProxy を例として使用していますが、メモリ内で生成された型に対して機能するコードが必要です。
ありがとう