2013-09-26 34 views
5

Trong unittesting Tôi đã chạy vào một vấn đề với đoạn mã sau đó yêu cầu tất cả các assembly được nạp:AppDomain.CurrentDomain.GetAssemblies không thành công với ReflectionTypeLoadException

var res = AppDomain.CurrentDomain.GetAssemblies() 
.SelectMany(x => x.GetTypes()) 
.ToList(); 

mã này không thành công với một ReflectionTypeLoadException trong đó có trường hợp ngoại lệ bên trong của mẫu

không thể tải loại Microsoft.Xml.Serialization.GeneratedAssembly.FOO

nơi FOO là một số lớp học cụ thể cũng được mã hóa bởi chúng tôi.

Sự cố phát sinh khi chạy unittests trước khi tạo tài liệu XML bằng cách sử dụng lớp XDocument.

Tôi có thể không cần thiết phải tải các lớp được tạo mã này (tôi đoán Microsoft.Xml.Serialization.GeneratedAssembly. * Là mã được tạo.) Tôi chỉ muốn hiểu những gì sai.

Trả lời

5

Bạn nên kiểm tra trường IsDynamic của hội đồng có sẵn tại .netframework 4 trở lên.

var res = AppDomain.CurrentDomain.GetAssemblies().Where(ass => ass.IsDynamic == false) 
.SelectMany(x => x.GetTypes()) 
.ToList(); 
0

tôi đã kết thúc kết luận rằng các lớp học được thời gian chạy mã được tạo cho serialization và XmlSerialization (và những người khác?) Là uninterestingto tôi. Do đó, bộ lọc sau đã giúp

return AppDomain.CurrentDomain.GetAssemblies() 
.Where(x => !x.FullName.StartsWith("Microsoft.GeneratedCode")) 
.SelectMany(x => x.GetTypes()) 
.ToList(); 
Các vấn đề liên quan