public ICommandSetFactory CreateCommandSetFactory(Type type) { var commandTyeInfo = new CommandTypeInfo(WrapRequired ? WrapFactory(type) : type, null); commandTyeInfo.ActualCommandType = type; return(ActivatorUtilities.CreateInstance(null, this.CommandSetFactoryType, commandTyeInfo) as ICommandSetFactory); }
public void Initialize(IServiceProvider serviceProvider, CommandTypeInfo commandTypeInfo, CommandOptions commandOptions) { var command = commandTypeInfo.Command; if (command == null) { if (commandTypeInfo.CommandType != commandTypeInfo.ActualCommandType) { var commandFactory = ActivatorUtilities.CreateFactory(commandTypeInfo.CommandType, new [] { typeof(IServiceProvider) }); command = commandFactory.Invoke(serviceProvider, new object[] { serviceProvider }) as ICommand; } else { command = ActivatorUtilities.CreateInstance(serviceProvider, commandTypeInfo.CommandType) as ICommand; } } SetCommand(command); var cmdMeta = GetCommandMetadata(commandTypeInfo.ActualCommandType); try { Key = (TKey)cmdMeta.Key; Metadata = cmdMeta; } catch (Exception e) { throw new Exception($"The command {cmdMeta.Name}'s Key {cmdMeta.Key} cannot be converted to the desired type '{typeof(TKey).Name}'.", e); } var filters = new List <ICommandFilter>(); if (commandOptions.GlobalCommandFilterTypes.Any()) { filters.AddRange(commandOptions.GlobalCommandFilterTypes.Select(t => ActivatorUtilities.CreateInstance(serviceProvider, t) as CommandFilterBaseAttribute)); } filters.AddRange(commandTypeInfo.ActualCommandType.GetCustomAttributes(false).OfType <CommandFilterBaseAttribute>()); Filters = filters; }
public CommandSetFactory(CommandTypeInfo commandType) { CommandType = commandType; }