public ICommand GetCommand(string commandName) { if (_commands.ContainsKey(commandName)) { var template = _commands[commandName]; var type = template.GetType(); var command = _container.Activate <ICommand>(type); return(command); } else { return(null); } }
protected override void RegisterConfigTypeInterface(IContainer container, Type interfaceType, TypeRegistration implementationRegistration, KeyValuePair <string, object>[] unmappedAttributes, XmlElement dependency) { if (interfaceType != typeof(IDataStore)) { base.RegisterConfigTypeInterface(container, interfaceType, implementationRegistration, unmappedAttributes, dependency); return; } // IDataStore registrations get special treatment. The implementation must be disambiguated into Source and Target data stores, // which we do by wrapping it in a ConfigurationDataStore factory and manually registering the apropos interface. if ("sourceDataStore".Equals(dependency.Name, StringComparison.OrdinalIgnoreCase)) { Func <object> wrapperFactory = () => new ConfigurationDataStore(new Lazy <IDataStore>(() => (IDataStore)container.Activate(implementationRegistration.Type, unmappedAttributes))); container.Register(typeof(ISourceDataStore), wrapperFactory, implementationRegistration.SingleInstance); return; } if ("targetDataStore".Equals(dependency.Name, StringComparison.OrdinalIgnoreCase)) { Func <object> wrapperFactory = () => new ConfigurationDataStore(new Lazy <IDataStore>(() => (IDataStore)container.Activate(implementationRegistration.Type, unmappedAttributes))); container.Register(typeof(ITargetDataStore), wrapperFactory, implementationRegistration.SingleInstance); } }
/// <summary> /// Registers a specific interface to a type with the container. /// </summary> protected virtual void RegisterConfigTypeInterface(IContainer container, Type interfaceType, TypeRegistration implementationRegistration, KeyValuePair <string, object>[] unmappedAttributes, XmlElement dependency) { container.Register(interfaceType, () => container.Activate(implementationRegistration.Type, unmappedAttributes), implementationRegistration.SingleInstance); }