Tôi chỉ mới bắt đầu với Khung công tác Spring Delphi và đã tự hỏi liệu phiên bản hiện tại của vùng chứa DI có cho phép ủy nhiệm việc xây dựng một phương thức nhà máy mà không chỉ định một kiểu triển khai không?Delphi Spring DI: Có thể ủy nhiệm instantiation giao diện mà không có một kiểu triển khai không?
Ví dụ: một cái gì đó tương tự như thế này:
GlobalContainer
.RegisterFactory<ISomeObject>(
function: ISomeObject
begin
Result := CreateComObject(CLASS_SomeObject) as ISomeObject;
end)
.Implements<ISomeObject> // could probably be implied from the above
.AsSingletonPerThread;
Như bạn có thể thấy, trường hợp sử dụng cụ thể của tôi là sự khởi tạo của các đối tượng COM. Trong trường hợp đó, lớp triển khai giao diện mà tôi quan tâm không phải là một phần của ứng dụng của tôi nhưng tôi vẫn có thể tạo các cá thể bằng cách gọi CreateComObject
/CoCreateInstance
. Tuy nhiên, có vẻ như tôi không may mắn vì đăng ký trong Container luôn xuất hiện để được ràng buộc với một lớp thực hiện thực tế.
Giả sử điều này là không thể vì vậy tại thời điểm này, các chuyên gia của bạn sẽ giải quyết vấn đề này như thế nào? Bạn có tạo một lớp bao bọc hoặc lớp giả hoặc bạn chỉ cần giữ đối tượng COM ra khỏi vùng chứa DI và đơn giản là khởi tạo chúng qua CreateComObject
?
Cảm ơn bạn đã cập nhật! Thật tuyệt vời! :) –