0

私はSOAGUIフレームワークを構築する予定であり、サービスとクライアントモジュールからのサービス依存関係を自動検出したいと考えています。これまでのところ、クラスモジュールに配置された属性を使用して機能するこのようなコードがあります。

[ServiceProvider(typeof(DemoService3))]
[ServiceConsumer(typeof(DemoService1))]

人々がマーカーを追加することを忘れず、実行時にnull参照を取得する可能性があるように、これらを自動的にスキャンする方法を考えています。コードでは、サービスは次のコマンドを介して登録およびフェッチされます。

Services.RegisterService(new DemoService1());
Services.FetchService<DemoService3>();

これらの呼び出しと、渡される型(両方とも型パラメーターを取り、最初の呼び出しに対して暗黙的)を見つけたい...依存関係と構築を行うための残りのコードはすでに完了しています:)

4

3 に答える 3

4

これを理解するには、C# レベルではなく、CLR レベルで IL を分析する必要があります。

Mono Cecilを活用してこれを実現できるはずです。

于 2009-02-08T16:32:17.327 に答える
2

これを行うには、Mono.Cecil または .NET リフレクションを使用できます。

パフォーマンスと柔軟性が優れているため、Mono.Cecil をお勧めします。以下にいくつかのサンプル (Cecil + シンプルな拡張機能を上に載せたもの) を示します。

于 2009-02-08T16:43:02.860 に答える