Я начинаю с расширения перехвата Ninject и не могу заставить его работать в моей службе WCF. С расширением WCF ninject работает нормально, это перехват, который вызывает у меня проблемы. Может быть, я делаю это неправильно? Когда я пытаюсь добавить LinFuModel в конструктор ядра, он говорит мне, что он уже загружен, поэтому я думаю, это хорошо.Расширение перехвата Ninject с WCF дает мне ссылку на объект, не установленную на экземпляр объекта. error
В основном все перехватывание привязки прерывает мою службу wcf, но мой метод перехвата работает только на службе (getData() находится в контракте на обслуживание).
редактировать: следующие также не работает:
Kernel.Intercept((request) => request.Method.Name.StartsWith("Get"))
.With<TimingInterceptor>();
торцевую редактировать
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new ServiceModule());
//var binding = kernel.Bind<MockBroker>().ToSelf();
//binding.Intercept().With<TimingInterceptor>(); // THIS BREAKS
kernel.InterceptAfter<Watch>(m => m.GetData(0), i => { i.ReturnValue = "BLABLABLA"; log.Info("INTERCEPTED!"); }); //WORKS
//kernel.Bind<Watch>().ToSelf().Intercept().With(new TimingInterceptor()); //BREAKS
//kernel.Bind<FileSystemBroker>().ToSelf().Intercept().With<TimingInterceptor>(); //BREAKS
return kernel;
}
public class TimingInterceptor : SimpleInterceptor
{
readonly Stopwatch _stopwatch = new Stopwatch();
//private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
protected override void BeforeInvoke(IInvocation invocation)
{
_stopwatch.Start();
}
protected override void AfterInvoke(IInvocation invocation)
{
_stopwatch.Stop();
string message = string.Format("[Execution of {0} took {1}.]",
invocation.Request.Method,
_stopwatch.Elapsed);
//log.Info(message);
_stopwatch.Reset();
}
}
Thanx заранее, Rinze
Я попробовал его с атрибутом на моем классе MockBroker, и это работает. Тем не менее, он не может заставить его работать над привязкой. Кроме того, похоже, что методы не только должны быть виртуальными, но и публичными? – Syg 2010-11-28 18:57:23