Tag: 反转控制

用.net反转控制

我很少听到有人使用.Net 控制反转(Ioc)原理。 我有一些使用Java的朋友在Spring和PicoContainer中使用了更多的Ioc。 我理解从代码中删除依赖关系的原则……但我怀疑它是否更好。 为什么.Net程序员不使用(或使用更少)这些类型的框架? 如果你这样做,从长远来看,你真的发现了积极的影响吗?

温莎城堡在哪里以及如何建立伐木设施

我对Castle Windsor很新,我正在研究伐木设施的进出口。 它似乎相当令人印象深刻,但我唯一无法解决的是Windsor在我的类上设置Logger属性。 如下所示,如果尚未设置类,则将Logger设置为nullLogger,但是当Resolve完成运行时,将设置Logger属性。 private ILogger logger; public ILogger Logger { get { if (logger == null) logger = NullLogger.Instance; return logger; } set { logger = value; } } 所以我想知道windsor如何以及在哪里设置我的Logger属性。 干杯安东尼

IOC / DI:注册混凝土类型代码气味?

在我目前的项目中,我一直在努力解决这个问题。 我遇到过一些我没有(并且不需要)实现任何特定接口的具体类型的情况。 有时我希望通过容器进行解析,因为类型是在singleon生命周期中注册的; 有时,类型具有构造函数参数,这些参数是较大对象图的一部分,或者自身在单例生命周期中注册。 当我输入如下代码时,我总觉得有点奇怪: Container.RegisterType(); 有关这是代码气味还是违反使用IOC容器的最佳做法的任何想法?

当密钥类需要Session(或其他特定于上下文的变量)时如何设置IoC

我试图弄清楚如何在依赖类可以根据应用程序中的某个变量(在本例中为Session状态)进行更改的情况下使用IoC。 例如,我们的每个客户端都有一个不同的数据库,因此与数据库的连接需要建立在其Session中存储的值上(特别是因为如果某些用户拥有多个业务,并且可以在数据库之间切换,则可能有多个数据库) 。 以下是我们当前如何设置此结构的一般示例: public class MyTestController : ControllerBase { Repository _rep; public MyTest(Repository rep) { _rep = rep; } public MyTest() { string connString = String.Format(“Server={0}; Database={1};” , SessionContainer.ServerName, SessionContainer.DatabaseName; var dc = new DataContext(connString); _rep = new Repository(dc); } public int SampleFn() { return _rep.GetCountOfEmployees(); } } public class Repository { DataContext _context; […]