首先安装特定组件
Installing a particular assembly first
我的应用程序中有多个程序集,其中一些包含安装程序。但是,我需要确保我的入口程序集中的安装程序首先是 运行。 (我的应用程序定义了一些装饰器,安装顺序很重要。)
我试过这个:
_container.Install(FromAssembly.Containing<MyApplication>());
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory)));
但是 运行我的应用程序集中的安装程序两次,导致注册异常。
我可以通过在安装程序中创建一个字段来跟踪该安装程序是否具有 运行 和 return(如果有)来缓解这种情况,但这似乎很老套。
是否有正确的方法让 Windsor 安装单个程序集,然后将其余程序集安装在一个目录中而不重复?
我想我想做的是这样的事情
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory))
.SkipAlreadyRegistered());
或
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory))
.Except(FromAssembly.Containing<MyApplication>()));
使用 InstallerFactory 改变顺序如何?
public class AppFirstFactory: InstallerFactory
{
public override IEnumerable<Type> Select(IEnumerable<Type> installerTypes)
{
return installerTypes.OrderBy(x => x.Assembly == GetType().Assembly ? 0 : 1);
}
}
然后注册:
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory), new AppFirstFactory()));
我的应用程序中有多个程序集,其中一些包含安装程序。但是,我需要确保我的入口程序集中的安装程序首先是 运行。 (我的应用程序定义了一些装饰器,安装顺序很重要。)
我试过这个:
_container.Install(FromAssembly.Containing<MyApplication>());
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory)));
但是 运行我的应用程序集中的安装程序两次,导致注册异常。
我可以通过在安装程序中创建一个字段来跟踪该安装程序是否具有 运行 和 return(如果有)来缓解这种情况,但这似乎很老套。
是否有正确的方法让 Windsor 安装单个程序集,然后将其余程序集安装在一个目录中而不重复?
我想我想做的是这样的事情
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory))
.SkipAlreadyRegistered());
或
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory))
.Except(FromAssembly.Containing<MyApplication>()));
使用 InstallerFactory 改变顺序如何?
public class AppFirstFactory: InstallerFactory
{
public override IEnumerable<Type> Select(IEnumerable<Type> installerTypes)
{
return installerTypes.OrderBy(x => x.Assembly == GetType().Assembly ? 0 : 1);
}
}
然后注册:
_container.Install(FromAssembly.InDirectory(new AssemblyFilter(applicationDirectory), new AppFirstFactory()));