Od dawna próbuję to zrozumieć. gdy próbuję powiązać moją klasę z kolektora Dostaję następujący wyjątek na liniiNie można pobrać pliku Ninject.Extensions.Interception working
Kernel.Bind<MyClass>().ToSelf().Intercept().With<ILoggerAspect>();
Error loading Ninject komponent IAdviceFactory. Nie taki element został zarejestrowany w składniku pojemnika jądra
Próbowałem zi bez LoadExtensions, zo z użyciem modułu skonfigurować moje powiązania i moją ostatnią próbę wygląda to
internal class AppConfiguration
{
internal AppConfiguration()
{
var settings = new NinjectSettings() { LoadExtensions = false };
Kernel = new StandardKernel(settings);
Load();
}
internal StandardKernel Kernel { get; set; }
public static AppConfiguration Instance
{
get { return _instance ?? (_instance = new AppConfiguration()); }
}
private static AppConfiguration _instance;
private void Load()
{
Kernel.Bind<ILoggerAspect>().To<Log4NetAspect>().InSingletonScope();
Kernel.Bind<MyClass>().ToSelf().Intercept().With<ILoggerAspect>();
}
internal static StandardKernel Resolver()
{
return Instance.Kernel;
}
}
Moja Logger Atrybut wygląda to
public class LogAttribute : InterceptAttribute
{
public override IInterceptor CreateInterceptor(IProxyRequest request)
{
return request.Context.Kernel.Get<ILoggerAspect>();
}
}
i mój kolektora jak ten
public class Log4NetAspect : SimpleInterceptor, ILoggerAspect
{
protected override void BeforeInvoke(IInvocation invocation)
{
Debug.WriteLine("Running " + invocation.ReturnValue);
base.BeforeInvoke(invocation);
}
public new void Intercept(IInvocation invocation)
{
try
{
base.Intercept(invocation);
}
catch (Exception e)
{
Debug.WriteLine("Exception: " + e.Message);
}
}
protected override void AfterInvoke(IInvocation invocation)
{
Debug.WriteLine("After Method");
base.AfterInvoke(invocation);
}
}
Próbowałem zabrać je z Nuget, czy potrzebujesz obu, czy tylko jednego? –
Dzięki, że to było to. Dlaczego pakiet nuget nie dodaje jednego z nich jako domyślnego? od programisty, który go używa, nie ma znaczenia, z czego korzysta. –
Przydatne, aby wiedzieć, próbowałem go do pracy przy użyciu LoadExtensions = false i nie można uzyskać wystąpienie czegokolwiek z jądra – user1039513