Có thể đăng ký một lớp học với thông số dự kiến được chuyển từ điểm sáng tạo?delphi - làm thế nào để vượt qua một tham số từ instantiator đến một constructor trong framework phun phụ thuộc spring4d?
Tôi biết nó có thể được thực hiện một cái gì đó như thế này:
GlobalContainer.RegisterType<TUserProcessor>.Implements<IUserUpgrader>.
AsTransient.DelegateTo(
function: TUserProcessor
begin
Result := TUserProcessor.Create(GetCurrentUser);
end
);
Nhưng có các thông số được binded với bối cảnh thực hiện nơi container được đăng ký và không phải là nơi các đối tượng get của intantiated.
Ví dụ như điều này có thể xảy ra?
GlobalContainer.Resolve<IMathService>([FCurrentUser]);
Tôi biết một số người ủng hộ peoble để có nhà xây dựng rất đơn giản, nhưng có những lúc một tham số constructor trông rõ con đường để đi:
Đối tượng xây dựng cần tham số đối tượng để làm việc, vì vậy tham chiếu phải được thỏa mãn. Tham số này cũng làm cho ràng buộc đó rõ ràng hơn nhiều khi nhìn vào lớp.
Bạn có thể gán tham chiếu trong một phương thức hoặc thuộc tính và tăng và ngoại lệ trong mọi phương thức khác nếu bạn cố gắng sử dụng đối tượng mà không cần thực hiện chuyển nhượng .. Tôi không thích viết loại mã này lãng phí thời gian, chỉ cần sử dụng tham số hàm tạo và kiểm tra ở đó. Ít mã hơn, IMO tốt hơn.
Ngoài ra đối tượng được truyền nội bộ vào đối tượng tạo đối tượng mới bằng cách sử dụng vùng chứa (ví dụ đối tượng Giao dịch) và có một số trạng thái (không phải đối tượng mới mà tôi có thể có với vùng chứa).
Tôi không biết của một tình trạng quá tải của 'TContainer.Resolve 'chấp nhận một tham số mảng trong Spring4D. Tôi có nhớ điều gì không? –
menjaraz
@menjaraz Nó chỉ là và ý tưởng về cách nó có thể được thực hiện (chắc chắn nó có thể được donde với RTTI) –
Ok, mà âm thanh như một yêu cầu tính năng. Tại sao không đăng bài đó lên [spring4d Google Group] (http://groups.google.com/group/spring4d)? – menjaraz