2
我有一個通過XML文件配置的統一容器。配置完成後,我想通過代碼爲某些類型添加一些攔截。如何才能做到這一點?我有以下行爲:在容器初始化後配置統一攔截
using System;
using System.Collections.Generic;
using System.Web.Mvc;
using Microsoft.Practices.Unity.InterceptionExtension;
using NLog;
namespace WebDibaelsaMVC.Utils.Behaviors
{
public class LoggingBehavior : IInterceptionBehavior
{
private readonly Logger _log = LogManager.GetLogger("Unity");
public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
{
var msg = getNext()(input, getNext);
if (msg.Exception != null)
_log.ErrorException("Error d'unity.", msg.Exception);
return msg;
}
public IEnumerable<Type> GetRequiredInterfaces()
{
return new[] {typeof (IController)};
}
public bool WillExecute
{
get
{
return true;
}
}
}
}
,我希望這樣的類型的一個IController方法的所有呼叫都通過容器解決,通過這種行爲。我該怎麼做?
但是,我可以添加行爲到已經註冊的組件嗎?我只找到了在註冊時間添加行爲的方法... – 2011-04-07 06:01:29
當然,只需調用container.RegisterType(new InterceptionBehavior(...));再次。它增加了現有的註冊,而不是覆蓋它。 –
2011-04-08 00:18:49
太棒了!謝謝!我認爲它再次註冊了類型。 – 2011-04-08 05:56:17