Tôi đã suy nghĩ một chút về cách tiêm phụ thuộc có thể được tích hợp tốt hơn trực tiếp vào ngôn ngữ như C #. Tôi đã đưa ra một giải pháp tiềm năng mà tôi muốn nghe ý kiến của bạn. Tôi chưa sử dụng nhiều khung tiêm phụ thuộc nên có thể có thứ gì đó tôi đang xem
Dù sao, ý tưởng là có thể khai báo các thuộc tính là "tiêm" bằng cách sử dụng từ khóa. Khi một đối tượng được khởi tạo và thuộc tính đó không được khởi tạo thông qua hàm tạo hoặc trình khởi tạo đối tượng, nó yêu cầu một thể hiện của loại thuộc tính đó từ một số dịch vụ toàn cầu.
Tương tự, bạn đăng ký trình xử lý cho các loại khác nhau cho dịch vụ đó để bạn có thể khởi tạo loại thuộc tính được tiêm.
Ưu điểm của việc sử dụng loại kiến trúc IMO này là nó khá linh hoạt và dễ sử dụng. Nhược điểm là có thể có một số chi phí thực hiện chú thích cho người độc thân mỗi khi bạn bắt đầu một lớp đã tiêm.
Sau đó, một lần nữa, đó chỉ là một vấn đề đối với các lớp được khởi tạo thường xuyên trong một giải pháp hiệu suất cao, vì vậy nó không phải là vấn đề lớn. Có lẽ bạn có thể sử dụng một số loại nhà máy trong những trường hợp đó.
Suy nghĩ, vấn đề, câu hỏi, ý tưởng tốt hơn?
Mã
public class SomeClass
{
public SomeClass()
{
//implicit behavior if Animal is not set in constructor or initializer
this.Animal = GlobalInjector.Get(this,typeof(Mammal))
}
public injectable Mammal Animal
{
get;
set;
}
}
GlobalInjector.Register(typeof(Mammal), () => return new Mammal(someParameter));