我必须从数据库加载命令对象然后执行它。 DB中的命令看起来像(字符串CommandType,对象参数)。 我注册了一些命令如下:
builder.RegisterType<CommandA>().Named<ICommand>(typeof(CommandA).Name);
builder.RegisterType<CommandB>().Named<ICommand>(typeof(CommandB).Name);
//Resolve
var metadata= GetCommandMetadataFromDB();
var command = _lifetimeScope.ResolveNamed<ICommand>(metadata.CommandType);
//Execute it
var someResult= command.Execute(metadata.Parameters);
以下是问题:
答案 0 :(得分:2)
您可以使用RegisterAssemblyTypes
方法从给定的程序集集中注册类型,您也可以使用Named
选项生成与手动注册中相同的名称:
builder.RegisterAssemblyTypes(your3rdPartyAssemblies)
.AssignableTo<ICommand>()
.Named<ICommand>(týpeToRegister => týpeToRegister.Name);