Tag: 统一容器

是否有初始化通过DI容器创build的对象的模式

我想让Unity来pipe理我的对象的创build,我想有一些初始化参数,直到运行时才知道: 目前唯一能想到的方法是在界面上使用Init方法。 interface IMyIntf { void Initialize(string runTimeParam); string RunTimeParam { get; } } 然后使用它(在统一)我会这样做: var IMyIntf = unityContainer.Resolve<IMyIntf>(); IMyIntf.Initialize("somevalue"); 在这种情况下, runTimeParam参数是在运行时根据用户input确定的。 这里的小事情只是返回runTimeParam的值,但实际上这个参数是类似文件名的,初始化方法会对文件做一些事情。 这就产生了一些问题,即Initialize方法在接口上可用,可以多次调用。 在实现中设置一个标志,并抛出exception重复调用Initialize似乎是笨重的。 在我解决我的界面的时候,我不想了解IMyIntf的实现。 我所需要的是,这个接口需要一定的初始化参数。 有没有办法用这个信息注释(属性?)接口,并在创build对象时将它们传递给框架? 编辑:描述更多的接口。