Tôi đang cố gắng để Unity quản lý việc tạo các đối tượng của mình và tôi muốn có một số tham số khởi tạo không được biết cho đến thời gian chạy:
Hiện tại, cách duy nhất tôi có thể nghĩ ra cách thực hiện là có một phương thức init trên giao diện.
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
Sau đó, để sử dụng nó (trong Unity) tôi sẽ làm điều này:
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
Trong kịch bản này, runTimeParam
param được xác định tại thời điểm chạy dựa trên đầu vào của người dùng. Trường hợp tầm thường ở đây chỉ đơn giản trả về giá trị củarunTimeParam
nhưng trong thực tế, tham số sẽ giống như tên tệp và phương thức khởi tạo sẽ làm một cái gì đó với tệp.
Điều này tạo ra một số vấn đề, cụ thể là Initialize
phương thức này có sẵn trên giao diện và có thể được gọi nhiều lần. Đặt cờ trong quá trình thực hiện và ném ngoại lệ vào cuộc gọi lặp lạiInitialize
có vẻ khó hiểu.
Tại thời điểm tôi giải quyết giao diện của mình, tôi không muốn biết gì về việc triển khai IMyIntf
. Tuy nhiên, điều tôi muốn là kiến thức rằng giao diện này cần một số tham số khởi tạo nhất định. Có cách nào để chú thích (thuộc tính?) Giao diện với thông tin này và chuyển chúng vào khung khi đối tượng được tạo không?
Chỉnh sửa: Mô tả giao diện nhiều hơn một chút.
runTimeParam
là một phụ thuộc được xác định tại thời điểm chạy dựa trên đầu vào của người dùng. Có nên thay thế cho việc này để chia nó thành hai giao diện - một cho khởi tạo và một để lưu trữ các giá trị?