当我试图解析IUIVisualizerService时,Ninject.ActivationException出现在Ninject.dll中。
有人能帮我吗?
这个代码部分调用了这个问题:
NinjectDependencyResolver resolver = new NinjectDependencyResolver();
var item = resolver.GetService<IUIVisualizerService>();Resolver代码:
using System;
using System.Collections.Generic;
using Catel.Services;
using Ninject;
using NLog;
namespace MS_Modell.Infrastructure
{
internal class NinjectDependencyResolver
{
private IKernel kernel;
private Logger log = LogManager.GetCurrentClassLogger();
public NinjectDependencyResolver()
{
try
{
kernel = new StandardKernel();
kernel.Bind<IUIVisualizerService>().To<UIVisualizerService>();
}
catch (Exception ex)
{
log.Fatal("NinjectDependencyResolver(): " + ex);
throw;
}
}
public T GetService<T>()
{
try
{
return kernel.TryGet<T>();
}
catch (Exception ex)
{
log.Fatal("GetService<T>(): " + ex.Message);
throw;
}
}
}
}编辑:在调用GetService之后,我得到了一个空对象。但这个例外没有被提出来。只有在Visual的控制台输出上可以看到一条消息:
"Ninject.ActivationException“类型的删除(第一次机会)在Ninject.dll中抛出。
编辑2:
为了快速的答案。以下是一个遇到同样问题的人的具体解决方案:
在NinjectResolver中,您需要添加以下代码:
kernel.Bind<IViewLocator>().To<ViewLocator>();
kernel.Bind<IUIVisualizerService>().To<UIVisualizerService>().WithConstructorArgument("ViewLocator", GetService<IViewLocator>());解析IUIVisualizerService:
TargetSelectorViewModel selector = new TargetSelectorViewModel();
var item = resolver.GetService<IUIVisualizerService>();
item.Register(typeof(TargetSelectorViewModel), typeof(TargetSelector));
item.ShowDialog(selector);发布于 2014-03-06 11:53:14
UIVisualizerService需要IViewLocator的依赖注入。确保尼尼特也能解决这个问题。
https://stackoverflow.com/questions/22221314
复制相似问题