我将使用StructureMap作为DI的一种方式。我将使用xml作为我的DI配置。我有两个问题。
第一个是如何使用惯用的xml文件名而不是StructureMap.Config?例如,在我的控制台应用程序中,如果我想使用myDIStructure.config文件,我应该在main()中使用哪个类和方法:
private static void main(string[] args) {
//? OjbectFactory.UserConfigurationFile = "myDIStructure.config";
Program program = ObjectFactory.GetInstance<Program>();
...
}
第二个问题是如何在配置文件中使用类类型定义泛型接口。例如,我有以下接口和类:
public interface ProcessData<T> {
void ReadData(T data);
void ProcessData(T data);
void SaveData(T data);
}
...
public class Data1 {....} // this class will be used for ProcessData<T>
....
public class MyProcessData : ProcessData<Data1> {....} // implementation class
然后在我的控制台应用程序中,我想将PlugInFamily用于ProcessData接口类型,并使用Plugin for MyProcessData。不确定这在StructionMap中是否可行以及如何实现?
答案 0 :(得分:1)
首先 - 我越来越认为xml配置选项现在主要用于向后兼容。主要的StructureMap代码现在使用基于代码的注册表方法。
重新使用自定义文件;我没有尝试过,但StructureMapConfiguration.IncludeConfigurationFromFile(...)
看起来很有希望。
重复泛型......确实,这是xml ;-p
的复杂性之一修改:根据this post中的user group,看起来可能后面的刻度表示法将起作用:
<DefaultInstance
PluginType="MyDemo.IRepository`1, MyDemo"
PluggedType="MyDemo.UserRepository , MyDemo" />