Tôi có một trình trợ giúp thẻ với nhiều hàm tạo trong ứng dụng ASP.NET 5 của tôi. Điều này gây ra lỗi sau khi chạy khi ASP.NET 5 cố gắng giải quyết loại:ASP.NET 5 MVC 6 Dependency Injection với nhiều Constructors
InvalidOperationException: Nhiều nhà thầu chấp nhận tất cả các loại đối số đã cho được tìm thấy trong loại 'MyNameSpace.MyTagHelper'. Chỉ nên có một nhà xây dựng được áp dụng.
Một trong các hàm tạo là tham số và trường còn lại có một số đối số có tham số không phải là loại đã đăng ký. Tôi muốn nó sử dụng constructor parameterless.
Có cách nào để tải khung công tác phụ thuộc ASP.NET 5 để chọn một hàm tạo cụ thể không? Thông thường điều này được thực hiện thông qua việc sử dụng một thuộc tính nhưng tôi không thể tìm thấy bất cứ điều gì.
Trường hợp sử dụng của tôi là tôi đang cố tạo một lớp duy nhất vừa là TagHelper, vừa là trình trợ giúp HTML hoàn toàn có thể nếu vấn đề này được giải quyết.
Thuốc tiêm của bạn chỉ nên có một hàm tạo. Có [nhiều nhà xây dựng là một mẫu chống] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97). – Steven
Vâng, nó không lý tưởng. Tôi sẽ nghĩ ra một công việc. –
Nếu bạn đọc [bài báo] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97) hoàn toàn, bạn sẽ thấy câu trả lời rất đơn giản. Trong trường hợp loại bạn kiểm soát: hãy xóa một hàm tạo. Nếu 'MyTagHelper' này là một kiểu bên thứ ba hoặc khung công tác, hãy đăng ký nó bằng cách sử dụng một đại biểu nhà máy và gọi hàm tạo cụ thể bên trong ủy nhiệm đó. – Steven