Tôi đã cố gắng cho các lứa tuổi để tìm ra điều này. khi tôi cố gắng để ràng buộc lớp học của tôi với một đánh chặn tôi nhận được ngoại lệ sau đây trên dòngKhông thể nhận Ninject.Extensions.Interception làm việc
Kernel.Bind<MyClass>().ToSelf().Intercept().With<ILoggerAspect>();
Lỗi tải Ninject phần IAdviceFactory. Không có thành phần như vậy đã được đăng ký vào bình chứa thành phần của hạt nhân
tôi đã cố gắng có và không có LoadExtensions, Với khoảng với việc sử dụng một mô-đun để thiết lập các ràng buộc của tôi và cố gắng cuối cùng của tôi trông như thế này
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;
}
}
Logger Thuộc tính của tôi trông giống như
public class LogAttribute : InterceptAttribute
{
public override IInterceptor CreateInterceptor(IProxyRequest request)
{
return request.Context.Kernel.Get<ILoggerAspect>();
}
}
Và đánh chặn này của tôi như thế này
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);
}
}
Tôi đã cố gắng lấy chúng bằng Nuget, bạn có cần cả hai hoặc chỉ một? –
Cảm ơn điều đó. Tại sao gói nuget chỉ thêm một trong số này làm Mặc định? từ nhà phát triển sử dụng nó nó làm cho không có sự khác biệt những gì nó sử dụng. –
Hữu ích để biết, tôi đã cố gắng để làm cho nó hoạt động bằng cách sử dụng LoadExtensions = false và không thể có được một thể hiện của bất cứ điều gì từ hạt nhân – user1039513