public static void RegisterConfig(this IIocBuilder builder, XElement root) { var compEles = root.Element("components").Elements("component"); foreach (var ele in compEles) { var serviceType = Type.GetType(ele.Attribute("type").Value); var interfaceType = Type.GetType(ele.Attribute("service").Value); LifeTimeScope scope = LifeTimeScope.Transient; if (ele.Attribute("scope") != null) { switch (ele.Attribute("scope").Value.ToLower()) { case "singleton": scope = LifeTimeScope.Singleton; break; case "workunit": scope = LifeTimeScope.WorkUnit; break; case "transiant": default: scope = LifeTimeScope.Transient; break; } } bool autoWire = ele.AttributeValue <bool>("autowire", false); string name = ele.AttributeValue("name", null); Func <IIocContext, IDictionary <string, object> > getConstructorParameters = null; if (ele.HasElements) { var paraEles = ele.Element("parameters").Elements("parameter"); Dictionary <string, object> paras = new Dictionary <string, object>(); foreach (var pele in paraEles) { paras.Add(pele.Attribute("name").Value, pele.Attribute("value").Value); } getConstructorParameters = (ctx) => { return(paras); }; } builder.RegisterType(interfaceType, serviceType, scope, name, autoWire, getConstructorParameters); } var moduleEles = root.Element("modules").Elements("module"); foreach (var ele in moduleEles) { var moduleType = Type.GetType(ele.Attribute("type").Value); IIocModule module = Activator.CreateInstance(moduleType) as IIocModule; builder.RegisterModule(module); } }
public static IIocBuilder UseEventStore(this IIocBuilder iocBuilder) { iocBuilder.RegisterServices(r => r.Register <IEventStore, EventStore>()); iocBuilder.RegisterModule <FakeEventStoreModule>(); return(iocBuilder); }