gpt4 book ai didi

c# - "No parameterless constructor defined for this object."用于 Controller 中使用 StructureMap 的 IBus

转载 作者:行者123 更新时间:2023-11-30 20:37:52 25 4
gpt4 key购买 nike

我正在尝试使用 NServiceBus 设置 StructureMap。我已经下载了所有包,NuGet 为我创建了一些文件:

New files by NuGet for StructureMap

这是这些文件中的代码

IoC.cs:

public static class IoC {
public static IContainer Initialize() {
var cont = new Container();
cont.Configure(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
//x.For<IExample>().Use<Example>();
});
return cont;
}
}

结构图.cs:

[assembly: WebActivator.PreApplicationStartMethod(typeof(MyProjectName.App_Start.StructuremapMvc), "Start")]

namespace MyProjectName.App_Start {
public static class StructuremapMvc {
public static void Start() {
IContainer container = IoC.Initialize();
DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new StructureMapDependencyResolver(container);
}
}
}

没有改变任何东西,所以这些文件就是这样创建的。然后我在我的一个 Controller 中添加了一个构造函数:

public class ProductsController : Controller
{
private readonly IBus _bus;

public ProductsController(IBus bus)
{
_bus = bus;
}

public ActionResult Index()
{
ViewBag.Title = "Product list";

var message = new ProductMessage();
_bus.Send(message);

return View();
}
}

那是我得到错误的时候

No parameterless constructor defined for this object.

这很奇怪,因为这一行

scan.WithDefaultConventions();

如果我尝试注入(inject) IBus,应该排除这个问题。

我已经尝试过什么:

  • 从 StructuremapMvc.cs 中删除 [assembly: ...] 并调用来自 Global.asax 的 StructuremapMvc.Start()。同样的结果。
  • 在 Controller 中添加了无参数构造函数,如下所示它的主体:

    _bus = _bus = new Container().GetInstance< IBus>();

    但 _bus 仍然为空,我得到了一个与之相关的异常。

请协助。

最佳答案

应为您自己的代码和 NServiceBus 配置相同的容器。下面的代码显示了 StructureMap 的这种配置。

BusConfiguration busConfiguration = new BusConfiguration();

//Configure the container and use the same one for MVC and NServiceBus
Container container = new Container();

busConfiguration.UseContainer<StructureMapBuilder>(c => c.ExistingContainer(container));

More information

关于c# - "No parameterless constructor defined for this object."用于 Controller 中使用 StructureMap 的 IBus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35685819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com