5

Có thể thực hiện việc tiêm tài sản với OrchardCMS không?Làm thế nào để làm cho Autofac thực hiện tiêm tài sản tại Orchard CMS

Tôi biết rằng Orchard sử dụng Autofac và Autofac không thực hiện việc tiêm tài sản, nhưng tôi cần phải biết cách thực hiện tiêm tài sản cho giao diện IOrchardServices.

Nhóm của chúng tôi đang tìm kiếm Orchard nhưng cơ sở mã của chúng tôi là tất cả trong ASP.NET 4.0 WebForms và vì vậy chúng tôi sẽ tiếp tục phục vụ các trang aspx và từ từ di chuyển các trang đó vào Orchard theo thời gian.

Với điều đó, chúng tôi sẽ cần một cách để truy cập vào đối tượng OrchardServices. Tôi nghĩ rằng đây là điều tôi phải tự mình làm. Có ai có bất kỳ ví dụ điển hình nào về việc thực hiện tiêm bất động sản tại Orchard không?

Trả lời

3

Nó khá đơn giản - nhìn vào nguồn của nó như thế nào nó được thực hiện với ILogger giao diện và làm tương tự cho IOrchardServices. Tệp nguồn là Orchard.Framework/Logging/LoggingModule.cs. Đó là chính xác những gì bạn đang tìm kiếm, tôi đoán.
Mọi thứ đang được thực hiện thông qua mô-đun Autofac (thực hiện Autofac.Module lớp học). Có gì lớp mà không là:

  • đăng ký thi hành ILogger giao diện (Load phương pháp) và
  • được thuộc tính của đối tượng xử lý và những người thích hợp để thiết lập đối tượng được giải quyết từ container (AttachToComponentRegistration phương pháp).

Khá đơn giản. Mô-đun Autofac là một cách hay để cắm vào tiến trình DI.

Sẽ đủ để sao chép tệp nguồn đó vào mô-đun Orchard tùy chỉnh của bạn và thay đổi ILogger thành IOrchardServices (và dĩ nhiên là lớp đã đăng ký). Lớp tôi đã đề cập sử dụng mẫu nhà máy để tạo các cá thể, nhưng bạn có thể thay đổi thành tạo đối tượng đơn giản thông qua mới và loại bỏ các thứ liên quan đến nhà máy.

+0

Tuyệt vời! Cảm ơn bạn đã chỉ ra LoggingModule làm ví dụ, đưa ra một ví dụ cụ thể về chính xác những gì tôi cần: D – defines

Các vấn đề liên quan