Tôi chỉ mới bắt đầu với các container IoC để xin lỗi nếu đây là một câu hỏi ngu ngốc.Có một container IoC thay thế việc sử dụng các Nhà máy
tôi có mã như sau trong một ứng dụng
internal static class StaticDataHandlerFactory
{
public static IStaticDataHandler CreateHandler(StaticDataUpdate staticDataUpdate)
{
if (staticDataUpdate.Item is StaticDataUpdateOffice)
{
return new OfficeUpdateHandler();
}
if (staticDataUpdate.Item is StaticDataUpdateEmployee)
{
return new EmployeeUpdateHandler();
}
if (staticDataUpdate.Item == null)
{
throw new NotImplementedException(
string.Format("No static data provided"));
}
else
{
throw new NotImplementedException(
string.Format("Unimplemented static data type of {0}", staticDataUpdate.Item.GetType().FullName));
}
}
}
Nó cơ bản là một nhà máy đơn giản mà trả về chiến lược đúng đắn để xử lý các dữ liệu đầu vào.
Vùng chứa IoC có cho phép tôi loại bỏ mã như thế này không? Đó là để nói: nó sẽ cho phép tôi tự động chọn một thực hiện cụ thể để tải dựa trên loại của một tham số đầu vào?
Hoặc tôi có thể tham gia khóa học ở đây không?
Vì generics được giải quyết lúc biên dịch - anh ấy đưa ra quyết định dựa trên loại Item đang được vận chuyển như hàng hóa, quyết định thời gian chạy. – Bevan
Bạn không cần phải giải quyết generics tại thời gian biên dịch. Nhìn vào Type.MakeGenericType() nếu bạn không tin tôi. – dviljoen