我试图让 Unity 管理我的对象的创建,我想有一些初始化参数,直到运行时才知道:
目前,我能想到的唯一方法是在接口上使用 Init 方法。
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
然后使用它(在 Unity 中)我会这样做:
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
在这种情况下,runTimeParam
参数是在运行时根据用户输入确定的。这里的例子只是返回 runTimeParam
的值,但实际上参数类似于 file name,initialize 方法将对文件执行某些操作。
这会产生许多问题,即 Initialize
方法在接口上是可用的,并且可以被多次调用。在实现中设置一个标志并在重复调用 Initialize
时抛出异常看起来很笨拙。
在解析接口的时候,我不想知道关于 IMyIntf
实现的任何信息。但是,我真正想要的是了解这个接口需要某些一次性的初始化参数。是否有方法以某种方式注释(属性?)这些信息的接口,并传递给框架时,对象创建?
编辑: 对接口进行了更多的描述。