是否存在初始化通过DI容器创建的对象的模式?

是否存在初始化通过DI容器创建的对象的模式?

我正试图让Unitu来管理我的对象的创建,并且我希望有一些直到运行时才知道的初始化参数:

目前,我唯一能想到的方法就是在接口上有一个Init方法。

interface IMyIntf {
  void Initialize(string runTimeParam);
  string RunTimeParam { get; }}

然后,为了使用它(在联合中),我会这样做:

var IMyIntf = unityContainer.Resolve<IMyIntf>();IMyIntf.Initialize("somevalue");

在这种情况下runTimeParamParam是根据用户输入在运行时确定的.这里的琐碎情况只是返回runTimeParam但在现实中,该参数将类似于文件名,初始化方法将对该文件执行一些操作。

这就产生了一些问题,即Initialize方法在接口上可用,可以多次调用。在实现中设置一个标志并在重复调用时抛出异常Initialize看起来很笨重。

在解析我的接口时,我不想知道IMyIntf..不过,我想知道的是,这个接口需要特定的一次初始化参数。是否有某种方式对(属性)进行注释?在创建对象时,使用该信息并将这些信息传递给框架的接口?

编辑:更多地描述了界面。


墨色风雨
浏览 618回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP