我一直在使用自定义配置对象安装Windsor容器.这似乎很简单,但显然有一些重要但我没有得到.如果你能帮我填补这个空白,我将不胜感激.
我有一个配置类:
class MyConfiguration
{
int SomeIntValue;
DateTime SomeDateValue;
Action<string> SomeActionValue;
}
Run Code Online (Sandbox Code Playgroud)
我想将这些配置值作为构造函数参数传递给已注册的实现.我想注册看起来应该是这样的:
public class MyInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<IFoo>.ImplementedBy<Foo>
.Parameters(Parameter.ForKey("parameter1").Eq( INSERT VALUE HERE (?) );
}
}
Run Code Online (Sandbox Code Playgroud)
那么我如何获取这些值并将它们传递给安装程序?我应该使用这个IConfigurationStore参数吗?如果是这样,我该如何填写它以及我该怎么做呢?
此外,似乎所有配置对象都只能存储字符串值,那么如何传递非字符串的值(例如DateTime)?
谢谢,周末愉快.
c# dependency-injection castle-windsor castle inversion-of-control
我正在阅读有关Glass.Mapper的文章.它看起来不错,是我想用于工作项目的东西.我们实际上将Glass.Mapper用于某些项目,但我们正在循环中简化我们的工具集,并决定使用Simple Injector进行IoC.这里:http://www.glass.lu/Mapper/Sc/Tutorials/Tutorial1我可以读到Glass.Mapper在与Sitecore一起使用时存在两个项目:
在Glass.Mapper主页的教程中,他们只展示了如何使用Glass.Mapper.Sc.CastleWindsor,他们没有展示如何实现Glass.Mapper可以使用的第三个IoC容器.但我认为有可能,当他们公开Glass.Mapper.Sc包时,但我无法找到任何解释,当我想要实现自己的时候,所以我开始认为有你自己做多少工作呢?我应该依赖Glass.Mapper.Sc.CastleWindsor,只需要这样做http://www.glass.lu/Blog/MixingInIoc,那么我也可以使用Simple Injector吗?
或者我错过了什么,这实际上是世界上最容易做到的事情吗?
c# castle-windsor ioc-container simple-injector glass-mapper
考虑我有一个界面.
interface Interface<A> {}
Run Code Online (Sandbox Code Playgroud)
现在我有2个实现此接口的类:
class ClassOne<A>: I<A> {}
class ClassTwo<A>: I<A> {}
Run Code Online (Sandbox Code Playgroud)
现在我想在第三个类中使用这两个类.
class child
{
child(Interface<A> objCA,Interface<A> objCB)
{}
}
Run Code Online (Sandbox Code Playgroud)
我无法使用Castle Windsor为子类注入依赖项.即使我注入它,它只传递一个对象到它们所有.那么如何使用Castle Windsor解决这个问题呢?
如何利用温莎的生活方式管理,但有自己的解决方法?目前我注册我的依赖如下:
_container.Register(Component.For<DbContext>()
.ImplementedBy<EntityContext>().DependsOn(Dependency.OnValue("connectionName", "EntityContext"))
.LifestylePerWebRequest());
Run Code Online (Sandbox Code Playgroud)
我想通过以下 lambda 解决依赖关系:
() => {
return new EntityContext("EntityContext");
}
Run Code Online (Sandbox Code Playgroud)
这怎么能结合?