public ApplicationView(string[] args)
{
InitializeComponent();
string configFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config");
FileInfo configFileInfo = new FileInfo(configFilePath);
XmlConfigurator.ConfigureAndWatch(configFileInfo);
IConfigurationSource configSource = ConfigurationManager.GetSection("ActiveRecord") as IConfigurationSource;
Assembly assembly = Assembly.Load("Danel.Nursing.Model");
ActiveRecordStarter.Initialize(assembly, configSource);
WindsorContainer windsorContainer = ApplicationUtils.GetWindsorContainer();
windsorContainer.Kernel.AddComponentInstance<ApplicationView>(this);
windsorContainer.Kernel.AddComponent(typeof(ApplicationController).Name, typeof(ApplicationController));
controller = windsorContainer.Resolve<ApplicationController>(); // exception is thrown here
OnApplicationLoad(args);
}
堆栈跟踪如下:
Castle.MicroKernel.ComponentActivator.ComponentActivator异常
未处理
实例化
堆栈跟踪:
(签名)
上下文)
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext)中
上下文)
位于Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext
在Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext)中
上下文)
上下文)
位于Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext
上下文)
位于Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveServiceDependency(CreationContext
上下文,组件模型,
依赖关系(模型依赖关系)
上下文,ISubDependencyResolver
parentResolver,ComponentModel,
依赖关系(模型依赖关系)
构造函数,CreationContext上下文,
键入[]和;(签名)
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext)中
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext)中
上下文)
位于Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext
上下文)
在Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext)中
在Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(CreationContext)中
位于Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext
上下文)
位于Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveServiceDependency(CreationContext
上下文,组件模型,
依赖关系(模型依赖关系)
上下文,ISubDependencyResolver
parentResolver,ComponentModel,
依赖关系(模型依赖关系)
构造函数,CreationContext上下文,
键入[]和;(签名)
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext)中
上下文)
位于Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext
在Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext)中
上下文)
上下文)
上下文)
位于Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveServiceDependency(CreationContext
依赖关系(模型依赖关系)
在Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(CreationContext)中
上下文,ISubDependencyResolver
parentResolver,ComponentModel,
依赖关系(模型依赖关系)
位于Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(ConstructorCandidate
构造函数,CreationContext上下文,
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext)中
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext)中
上下文)
位于Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext
上下文)
在Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(CreationContext)中
上下文)
上下文)
在Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler
处理程序,类型服务,IDictionary
附加参数)
在Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler
在Castle.MicroKernel.DefaultKernel.get\项(键入
服务)
在Castle.Windsor.WindsorContainer.Resolve(键入
在Castle.Windsor.WindsorContainer.ResolveT
args)输入
E:\Agile\Scheduling\Danel.Nursing.Scheduling\ApplicationView.cs:行
65
在Danel.Nursing.Scheduling.Program.Main(字符串[])
args)输入
E:\Agile\Scheduling\Danel.Nursing.Scheduling\Program.cs:行
在System.AppDomain.\u nExecuteAssembly(程序集
程序集,字符串[]args)
在System.AppDomain.ExecuteAssembly(字符串
位于Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在System.Threading.ThreadHelper.ThreadStart\u上下文(对象
(州)
executionContext、ContextCallback
回调,对象状态)
位于System.Threading.ThreadHelper.ThreadStart()
内部异常:
System.ArgumentNullException异常
Source=“mscorlib”
ParamName=“类型”
堆栈跟踪:
bindingAttr,活页夹,类型[]
类型,ParameterModifier[]修饰符)
在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.FastCreateInstance(类型
implType,Object[]参数,Type[]
(签名)
位于Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext
上下文,对象[]参数,类型[]
(签名)
内部异常:
这是它抱怨的concreate类型:
namespace Danel.Nursing.Scheduling.Actions.DataServices
{
using System;
using Helpers;
using Rhino.Commons;
using Danel.Nursing.Model;
using NHibernate.Expressions;
using System.Collections.Generic;
using DateUtil = Danel.Nursing.Scheduling.Actions.Helpers.DateUtil;
using Danel.Nursing.Scheduling.Actions.DataServices.Interfaces;
public class NurseAbsenceDataService : AbstractDataService<NurseAbsence>, INurseAbsenceDataService
{
NurseAbsenceDataService(IRepository<NurseAbsence> repository)
: base(repository)
{
}
//...
}
}
AbstractDataService暂时只保留IRepository。
有人知道为什么会抛出异常吗?
编辑:
问题在于:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Danel.Nursing.Scheduling.Actions.Interfaces;
using Rhino.Commons;
using System.Reflection;
using Castle.Windsor;
namespace Danel.Nursing.Scheduling.Actions.Helpers
{
public class DataServicesInitiator : IDataServicesInitiator
{
public void AddToIocContainer(ref WindsorContainer windsorContainer)
{
if (windsorContainer.Kernel.HasComponent(typeof(IRepository<>)) == false)
windsorContainer.AddComponent(typeof(ARRepository<>).FullName, typeof(IRepository<>), typeof(ARRepository<>));
foreach (Type type in Assembly.Load("Danel.Nursing.Scheduling.Actions").GetTypes())
{
if (type == null)
continue;
if (type.Namespace != "Danel.Nursing.Scheduling.Actions.DataServices")
continue;
if (type.IsAbstract || type.IsInterface)
continue;
if (windsorContainer.Kernel.HasComponent(type.FullName))
continue;
if (type.GetInterfaces().Length == 0)
windsorContainer.AddComponent(type.FullName, type);
else
windsorContainer.AddComponent(type.FullName, type.GetInterfaces()[0], type);
}
}
}
}
由于某些原因,type为null,尽管GetTypes不返回null类型。