2013-04-27 34 views
5

Có thể kiểm tra loại loại chung, không sử dụng bất kỳ thông số chung nào không?Làm cách nào để xác định loại tham số loại C# chung cho mục đích kiểm tra?

Ví dụ, tôi muốn để có thể làm điều gì đó tương tự như sau (tên loại thực đã được thay đổi để bảo vệ sự vô tội):

var list = new List<SomeType>(); 

... 

if (list is List) 
    { 
    Console.WriteLine("That is a generic list!"); 
    } 

Đoạn mã trên hiện đang tạo ra các lỗi sau:

Using the generic type 'System.Collections.Generic.List<T>' requires 1 type arguments 

Có cách nào khác không? Tốt hơn là, một cái gì đó ngắn gọn và cái gì đó sẽ làm việc với các loại KHÔNG có các tham số chung (ví dụ: "nếu myString là Danh sách").

Trả lời

9

Bạn có thể kiểm tra như sau:

var type = list.GetType(); 
if(type.IsGenericType && 
    type.GetGenericTypeDefinition().Equals(typeof(List<>))) 
{ 
    // do work 
} 
Các vấn đề liên quan