Vâng, với một điều ArrayList
không phải là chung chung ... ý của bạn là List<Customer>
?
Bạn có thể sử dụng Type.GetType(string)
để nhận đối tượng Type
được liên kết với loại theo tên của nó. Nếu assembly không phải là mscorlib hoặc kiểu hiện đang thi hành, bạn sẽ cần phải bao gồm tên assembly. Dù bằng cách nào bạn cũng sẽ cần không gian tên.
Bạn có chắc chắn bạn thực sự cần loại chung không? Generics chủ yếu cung cấp biên dịch thời gian loại an toàn, rõ ràng bạn sẽ không có nhiều nếu bạn đang tìm kiếm loại tại thời gian thực hiện. Bạn thể thấy nó hữu ích mặc dù ...
Type elementType = Type.GetType("Customer");
Type listType = typeof(List<>).MakeGenericType(new Type[] { elementType });
object list = Activator.CreateInstance(listType);
Nếu bạn cần làm bất cứ điều gì với danh sách đó, bạn có thể cũng cần phải làm phản ánh chung chung hơn mặc dù ... ví dụ để gọi một phương pháp chung.
Nguồn
2009-01-29 21:27:55
John, không có triển khai chung cho lớp ArrayList trong khuôn khổ .NET. Bob, đây là phạm vi cho câu hỏi, nhưng nếu bạn đang lập trình trong C# 2.0+, bạn nên thay thế ArrayList cho một cái gì đó chung chung. – senfo