Giả sử tôi có một phương pháp nhà máy, mà muốn xây dựng một thể hiện của một loại được chọn tại thời gian chạy thông qua sự phản ánh. Giả sử thêm rằng phương thức factory của tôi là mã generic mà không tham chiếu trực tiếp assembly có chứa kiểu được chỉ định, mặc dù nó sẽ được chạy từ bên trong một ứng dụng có tham chiếu cần thiết được tham chiếu.Làm thế nào tôi có thể nhận được một loại từ một hội đồng tham chiếu thông qua sự phản ánh
Tôi làm cách nào để viết mã có thể tìm thấy loại này? Nếu tôi làm như sau
public object CreateInstance(string typeName)
{
Type desiredType = Assembly.GetExecutingAssembly().GetType(typename);
// Instantiate the type...
}
điều này dường như không thành công vì loại không được xác định trong hội đồng thực thi. Nếu tôi có thể nhận được tất cả các hội đồng có sẵn tại thời gian chạy, tôi có thể lặp qua chúng và tìm thấy một trong những có chứa loại tôi muốn. Nhưng tôi không thể nhìn thấy một cách để làm điều đó. AppDomain.CurrentDomain.GetAssemblies()
trông đầy hứa hẹn, nhưng không trả lại tất cả các hội đồng mà tôi đã tham chiếu trong dự án của tôi.
Chỉnh sửa: Một số người đã chỉ ra rằng tôi cần tải lắp ráp. Vấn đề là, đoạn mã này không biết lắp ráp nó nên tải, vì tôi đang cố gắng viết mã này theo cách mà nó không phụ thuộc vào các hội đồng khác.
Tôi cố tình bỏ qua các chi tiết của typeName
, vì ánh xạ từ chuỗi này sang thực tế phức tạp hơn trong mã thực của tôi. Trong thực tế, loại được xác định bởi một thuộc tính tùy chỉnh có chứa chuỗi được chỉ định, nhưng nếu tôi có thể giữ danh sách các loại, tôi không có vấn đề với việc hạn chế danh sách theo loại mong muốn.
Giá trị trong typeName là gì? Có phải tên đầy đủ không? –