У меня есть помощник тега с несколькими конструкторами в моем приложении ASP.NET 5. Это приводит следующее сообщение об ошибке во время выполнения, когда ASP.NET 5 пытается разрешить тип:ASP.NET 5 MVC 6 Инъекция зависимостей с несколькими конструкторами
InvalidOperationException: Множественные конструкторы, принимающим всем указанным типам аргументов были найдены в типе "MyNameSpace.MyTagHelper. Должен быть только один применимый конструктор.
Один из конструкторов является без параметров, а другой имеет некоторые аргументы, параметры которых не являются зарегистрированными. Я хотел бы использовать конструктор без параметров.
Есть ли какой-то способ заставить инфраструктуру внедрения зависимостей ASP.NET 5 выбрать конкретный конструктор? Обычно это делается с помощью атрибута, но я ничего не могу найти.
Моим вариантом использования является то, что я пытаюсь создать один класс, который является как TagHelper, так и HTML-помощником, что вполне возможно, если эта проблема будет решена.
Ваши инъекционные продукты должны иметь только один конструктор. Наличие [нескольких конструкторов является анти-шаблоном] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97). – Steven
Да, это не идеально. Я придумаю обход. –
Если вы полностью прочитали [статью] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97), вы увидите, что ответ прост. В случае типа, которым вы управляете: удалите один конструктор. Если этот «MyTagHelper» является сторонним или фрейм-типом, зарегистрируйте его с помощью делегата фабрики и вызовите конкретный конструктор внутри этого делегата. – Steven