2008-11-28 16 views
7

Tôi muốn tạo danh sách loại mạnh và quyết định loại trong thời gian chạy. Đây là code.I tôi nghĩ rằng nó sẽ làm việc, nhưng nó không :)Quyết định loại trong thời gian chạy và áp dụng nó trong loại chung - làm cách nào tôi có thể thực hiện việc này?

 Type elementType = Type.GetType(parts[0].Trim(),false,true); 
     var elementsBeingSet = new List<elementType>(); 

bạn sẽ phải bất kỳ ideat làm thế nào để tạo ra một danh sách mạnh mẽ gõ có loại tôi sẽ quyết định trong thời gian chạy?

trùng lặp: đây là các phiên bản khác:

+0

Rất tiếc, tôi không thể tìm thấy những người khác. –

+1

Trùng lặp hay không, tôi đã tìm kiếm trong một số "trùng lặp" nhưng câu hỏi + ví dụ ở đây rất rõ ràng, và câu trả lời cũng vậy, làm cho nó rất hữu ích. – Veverke

Trả lời

20

Sử dụng Type.MakeGenericType(type[]):

Type elementType = GetElementType(); // get this type at runtime 
Type listType = typeof(List<>); 
Type combinedType = listType.MakeGenericType(elementType); 
IList elements = (IList) Activator.CreateInstance(combinedType); 

Bạn phải sử dụng IList để giữ kết quả - bởi vì bạn không biết loại thực tế sẽ được sử dụng khi chạy.

Đối với các loại chung có nhiều thông số loại, bạn sẽ sử dụng thông số như Dictionary<,>.

Xem thêm http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx

Các vấn đề liên quan