Я пытаюсь установить StructureMap с NServiceBus. Я скачал все пакеты и NuGet создали несколько файлов для меня:«Нет конструктора без параметров, определенного для этого объекта». для IBus в контроллере using 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 и вызова StructuremapMvc.Start() из Global.asax. Тот же результат.
Добавлен конструктор без параметров в контроллер со следующими в это тело:.
_bus = _bus = новый контейнер() GetInstance < IBus>();
но _bus все еще был null, и я получил исключение, связанное с этим.
Пожалуйста, помогите.
Довольно прямо вперед. Для реализации IBus вам нужен конструктор без параметров. Если вы покажете код для этой реализации, я могу конкретно показать вам, что вам нужно сделать. – pquest
@pquest Да, если я поставлю безреугольный конструктор в свой контроллер, ошибка исчезнет. Но мне нужен экземпляр IBus в этом контроллере, и не имеет значения, поставил ли я его как параметр или попытался его решить отдельно, IBus все еще не может быть разрешен. Вы можете увидеть реализацию выше: ProductsController – XpyM
Какую версию 'StructureMap' вы используете? Какие пакеты и версии NuGet вы установили? – NightOwl888