Vì vậy, Đảo ngược kiểm soát là một mô tả mơ hồ, do đó Tiêm phụ thuộc trở thành định nghĩa mới. Đây là một giải pháp rất, rất mạnh và hoàn toàn có thể gây nhầm lẫn cho người chưa bao giờ gặp phải.Năm W của DI, IoC bởi vì nó làm cho bộ não của tôi phát nổ
Vì vậy, trong nhiệm vụ của tôi không phải là một con nai trong đèn pha, tôi đọc lên. Tôi tìm thấy một số cuốn sách tuyệt vời và bài đăng trực tuyến. Nhưng cũng giống như tất cả những điều tuyệt vời, nhiều câu hỏi nảy sinh hơn là câu trả lời.
Sự cố, hấp thụ các biến từ một dự án không xác định được triển khai sau khi chúng được đưa vào dự án của tôi.
Giải pháp:
public interface ISiteParameter
{
Guid CustomerId { get; set; }
string FirstName { get; set; }
string LastName { get; set; }
string Phone { get; set; }
}
injector của tôi:
public interface IInjectSiteParameter
{
void InjectSite(ISiteParameter dependant);
}
Sau đó, tôi tạo này:
public class SiteContent : IInjectSiteParameter
{
private ISiteParameter _dependent;
#region Interface Member:
public void InjectSite(ISiteParameter dependant)
{
_dependant = dependant;
}
#endregion
}
Sau đó, để thực hiện nó với một Shared tham khảo được biến Chán Tôi đã tạo một lớp học để được triển khai như:
public class SiteParameters : ISiteParameter
{
public Guid Customer Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
}
Bây giờ, SiteParameters Class
sẽ được tham chiếu bởi dự án khác; mà sẽ cho phép tôi thực sự gọi những đặc tính bất cứ khi nào và bất cứ nơi nào với:
ISiteParameter i = new ISiteParameter();
MessageBox.Show(i.Guid + i.FirstName + i.LastName + i.Phone);
Đó là việc thực hiện, nhưng câu hỏi của tôi là thế này ... Khi nào tôi để tôi sử dụng không?
- Constructor tiêm
- setter injection
- Interface tiêm
Khi bạn sẽ sử dụng một hay khác? Và đối với công việc tôi đã đề cập nên tôi thực hiện một nhiệm vụ khó khăn như vậy để điều chỉnh cho bất kỳ thay đổi nào được thực hiện cho dự án khác?
Tôi có rơi ra khỏi đường cong trong quá trình suy nghĩ của mình không?
tôi khen đột phá của bạn vào DI, thực sự nó là mạnh mẽ. Như bạn đã có nó thiết lập chưa có nhiều lợi ích hơn chỉ đơn giản là đi qua các giá trị cụ thể thông qua chữ ký cho phương pháp của bạn. Sức mạnh thực sự sẽ phát sinh khi cá thể ISiteParameter của bạn giữ các phương thức xác định cụ thể cho hành vi của nó, ngoài các cá thể ISiteParameter khác. – KodeKreachor
@KodeKreachor Tôi đang suy nghĩ về cách thực hiện một số lợi ích đó. Nhưng tôi là một trinh nữ DI/IoC. – Greg
Gotta chỉ ra bạn đang cố gắng để khởi tạo một 'giao diện' .. –