2012-04-12 30 views
6

Tôi đang sử dụng Type.GetType() để tạo một thể hiện.Loại.GetType() trả về chuỗi động null

này hoạt động:

var type = Type.GetType("Test.ClassServices.HowService, Test"); 

Nhưng, làm việc doesn't này. Nó trả về null:

var name = "How"; 
var type = Type.GetType("Test.ClassServices."+name+"Service, Test"); 
+2

GetType không tạo ra một thể hiện, nó trả về một đối tượng kiểu đại diện cho loại được chỉ định. Đối với null, bạn có chắc là assembly có thể được tìm thấy và được nạp và không gian tên là đúng không? – Lloyd

+4

Tôi đã thử điều này trong .NET 4 và không có vấn đề gì. Vì vậy, hãy kiểm tra kỹ mã cho lỗi chính tả. – Jetti

+2

Bạn có chắc chắn rằng bạn không làm bất kỳ lỗi đánh máy nào trong trường hợp thứ 2? Tôi cho rằng, giá trị của biến 'name' được tính toán, bạn có chắc chắn rằng điều này được thực hiện đúng không (BTW, các vấn đề vỏ bọc)? –

Trả lời

5

Không repro. Chạy mẫu này:

var hardCodedWorking = Type.GetType("System.String"); 

var stringName = "String"; 
var concatenatedWorking = Type.GetType("System." + stringName); 

var badStringName = "string"; 
var concatenatedNull = Type.GetType("System." + badStringName); 

Từ Type.GetType() trên MSDN:

Gets Type với tên được chỉ định, thực hiện một trường hợp nhạy cảm tìm kiếm.

Dựa trên điều đó và ví dụ của tôi ở trên, tôi cho rằng rất có thể giá trị của name không khớp với tên của lớp hoàn hảo.