6

Unity コンテナーによってファイル システムのログとして管理されるサービスで発生したすべてのアクションを追跡します。IService という名前のインターフェイスを定義でき、他のすべてのインターフェイスまたは実装はそれを継承する必要があると思います。一方で、ログをファイルに保存するカスタム インターセプト動作またはコール ハンドラを開発したいと考えています。

残念ながら、このコードを使用してもうまくいかないことがわかりました

IUnityContainer unity = new UnityContainer();

//Interception
unity.AddNewExtension<Interception>();
Interception interception = unity.Configure<Interception>();
unity.RegisterType<IService>(
    new DefaultInterceptor(new InterfaceInterceptor()),
    new DefaultInterceptionBehavior(new LoggingBehavior()));

string[] configFiles = Directory.GetFiles(".", "*.config");
foreach (string configFile in configFiles)
{
    var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile };
    System.Configuration.Configuration configuration =
        ConfigurationManager.OpenMappedExeConfiguration(fileMap,  
        ConfigurationUserLevel.None);
    var unitySection = (UnityConfigurationSection)
        configuration.GetSection("unity");
    unity = unitySection.Configure(unity);
}

IGateway imapGW = unity.Resolve<IGateway>("ImapGateway");

Unity でインターセプターを使用するのに誤解はありますか? 各サービスのインターセプターを構成せずにすべてを自動的にログに記録するには、この問題にどのように対処すればよいですか?

4

1 に答える 1

3

ロガーを実装する方法はたくさんあります。ずっと前に、インターセプターの設定方法に関する記事を書きました。

http://hmadrigal.wordpress.com/2010/12/25/aspect-Oriented-programming-and-interceptor-design-pattern-with-unity-2/

ロギングには、Debug.Writeを使用し、TraceListenersを構成できます。または、エンタープライズライブラリまたはサードパーティのログライブラリを使用することもできます。

よろしく、ハーバー

于 2012-10-12T04:18:24.893 に答える