views:

62

answers:

1

I am going to use StructureMap as a way to do DI. I'll use xml as my DI configuration. I have two questions.

The first one is how to use a customaized xml file name instead of StructureMap.Config? For example, in my console application, if I want to use myDIStructure.config file, what class and method should I use in the main():

private static void main(string[] args) {
    //? OjbectFactory.UserConfigurationFile = "myDIStructure.config";
    Program program = ObjectFactory.GetInstance<Program>();
    ...
}

The second question is how I define generic interface with a class type in my configuration file. For example, I have the following interface and class:

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

Then in my console application, I would like to use PlugInFamily for ProcessData interface type, and Plugin for MyProcessData. Not sure if this is possible in StructionMap and how?

+1  A: 

First - I'm increasingly of the opinion that the xml configuration option is now mainly left for backwards compatibility. The main StructureMap code now uses the code-based registry approach.

Re using custom files; I haven't tried it, but StructureMapConfiguration.IncludeConfigurationFromFile(...) looks promising.

Re generics... indeed, that is one of the complexities of xml ;-p

Edit: based on this post in the user group, it looks like maybe the back-tick notation will work:

<DefaultInstance 
  PluginType="MyDemo.IRepository`1, MyDemo" 
  PluggedType="MyDemo.UserRepository , MyDemo" />
Marc Gravell