Example #1
0
        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);
 }