Mam pomocnika znacznika z wieloma konstruktorami w mojej aplikacji ASP.NET 5. To powoduje następujący błąd przy starcie, gdy ASP.NET 5 próbuje rozwiązać typ:ASP.NET 5 MVC 6 Injection Dependency Injection z wieloma konstruktorami
InvalidOperationException: Wiele konstruktorzy akceptując wszystkie podane typy argumentów zostały znalezione w rodzaju „MyNameSpace.MyTagHelper”. Powinien być tylko jeden odpowiedni konstruktor.
Jeden z konstruktorów jest bez parametrów, a drugi ma kilka argumentów, których parametry nie są typami zarejestrowanymi. Chciałbym użyć konstruktora bez parametrów.
Czy jest jakiś sposób uzyskania schematu wtrysku zależności ASP.NET 5 w celu wybrania konkretnego konstruktora? Zwykle odbywa się to za pomocą atrybutu, ale nie mogę znaleźć niczego.
Moim przypadkiem użycia jest to, że próbuję utworzyć pojedynczą klasę, która jest jednocześnie TagHelper, a także pomocnik HTML, który jest całkowicie możliwy, jeśli problem zostanie rozwiązany.
Twoje strzykawki powinny mieć tylko jednego konstruktora. Posiadanie [wielu konstruktorów jest anty-wzorem] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97). – Steven
Tak, to nie jest idealne. Wymyślę obejście. –
Jeśli przeczytasz [artykuł] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97) całkowicie, zobaczysz, że odpowiedź jest prosta. W przypadku kontrolowanego typu: usuń jednego konstruktora. Jeśli ten "MyTagHelper" jest stroną trzecią lub typem struktury, zarejestruj go za pomocą delegata fabrycznego i wywołaj określonego konstruktora wewnątrz tego delegata. – Steven