2
我試圖用NServiceBus設置StructureMap。 我已經下載了所有的包和的NuGet創造了一些文件,對我來說:「沒有爲此對象定義無參數的構造函數。」對於控制器中的IBus使用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;
}
}
StructureMap.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);
}
}
}
沒有改變任何東西,所以這些文件是他們創建的方式。 然後我在控制器中添加一個構造函數:
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();
}
}
這時候,我得到了錯誤
此對象定義無參數的構造函數。
這是奇怪的,因爲這條線
scan.WithDefaultConventions();
,如果我試圖注入下iBus應排除這一問題。
有什麼我已經嘗試過:
- 刪除[組裝:...]從StructuremapMvc.cs,並呼籲從Global.asax中 StructuremapMvc.Start()。同樣的結果。
添加參數構造到所述控制器與 以下它的體:
_bus = _bus =新容器()的GetInstance <中IBus>();
但_bus仍爲空,我得到一個異常連接到。
請協助。
漂亮的直線前進。您需要IBus實現的無參數構造函數。如果您顯示該實現的代碼,我可以專門向您顯示您需要執行的操作。 – pquest
@pquest是的,如果我在我的控制器中放置一個無參數的構造函數,錯誤消失。但是我需要該控制器中的IBus實例,並且將它作爲參數或嘗試單獨解析它並不重要,但IBus仍然無法解析。你可以看到上面的實現:ProductsController – XpyM
你使用的是什麼版本的'StructureMap'?你已經安裝了哪些NuGet軟件包和版本? – NightOwl888