我试图让Unity来管理对象的创建,并且我想拥有一些直到运行时才知道的初始化参数:
目前,我唯一想到的方法是在接口上使用Init方法。
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
然后要使用它(在Unity中),我会这样做:
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
在这种情况下,runTimeParam
将在运行时根据用户输入确定参数。此处的普通情况只是返回的值,runTimeParam
但实际上,参数将类似于文件名,而initialize方法将对文件进行处理。
这会产生许多问题,即该Initialize
方法在界面上可用并且可以多次调用。在实现中设置标志并在重复调用时引发异常Initialize
似乎很麻烦。
在我解析界面的那一刻,我不想了解任何有关的实现IMyIntf
。不过,我真正想要的是该接口需要某些一次性初始化参数的知识。有没有一种方法可以用此信息注释(属性?)接口,并在创建对象时将其传递给框架?
编辑:描述了更多界面。
runTimeParam
是在运行时根据用户输入确定的依赖项。是否应该将其拆分为两个接口-一个用于初始化,另一个用于存储值?