我在项目中使用 structuremap ,并且针对特定需求,我希望能够访问structuremap中的 Container.GetInstance(Type type)方法。 考虑到洋葱建筑,我不想在我的解决方案的每个项目中引用nuget structuremap 。
所以我在一个核心项目中有一个课程,应该做那样的事情:
public class CommandDispatcherBase
{
public async Task<TCommandResult> DispatchAsync<TCommand, TCommandResult>(TCommand command)
{
// This line
CommandHandler<TCommand> handler = GetInstance(typeof(CommandHandler<TCommand>)));
handler.DoSomething();
}
}
使用:
public abstract class CommandHandler<TCommand>
{
// Some methods
}
并且:
public class RegisterUserHandler : CommandHandler<RegisterUserCommand>
{
// Some methods
}
在我的bootstrap注册表中:
For<CommandHandler<RegisterUserCommand>>().Use<RegisterUserHandler>();
但我不知道该怎么做。理想情况下,我希望在我的 Core 项目中使用委托方法:
public delegate object CommandHandlerFactory(Type handlerType);
我会在其中注入 Container.GetInstance(类型类型)结构图方法,但我不知道该怎么做。
有什么想法吗? 非常感谢!