2009-07-21 18 views
9

Có thể nhận được Type qua Type.GetType() khi tên hội đủ điều kiện được chuyển thành GetType() chỉ định Version khác với phiên bản DLL thực sự được tải không? Nếu có, hành vi của GetType() là gì?Bỏ qua phiên bản trong một tên đủ điều kiện được chuyển đến Type.GetType()

Tôi muốn nhận được một Type từ một hội đồng bất kể phiên bản đó là gì. Tôi có một chức năng mà được một tên lắp ráp đủ điều kiện là một cuộc tranh cãi:

Type someType = Type.GetType(someName); 

Giá trị someName tương ứng với Type Tôi muốn nhận, nhưng nó có thể không có cùng Version quy định như những gì được nạp trong ứng dụng của tôi .

+0

Câu hỏi này là không đủ chính xác ... làm những gì bạn có nghĩa là bởi muốn có được một loại từ lắp ráp, nhưng không biết loại bạn muốn nhận được từ đó lắp ráp? Điều đó nghe không hợp lý lắm. Và toàn bộ mục đích của "tên hội đủ điều kiện" là xác định verion và token với tên. Vui lòng chỉnh sửa câu hỏi để làm rõ. – galaktor

Trả lời

1

Trong thử nghiệm, tôi thấy rằng GetType() sẽ trả về loại thích hợp ngay cả khi phiên bản của phiên bản hiện đang tải không khớp với giá trị trong trường Version của hội đủ điều kiện.

+1

Điều này không hoạt động nếu ứng dụng của bạn được đặt tên mạnh. – jnm2

+0

Tôi không có một ứng dụng được đặt tên mạnh, và điều này chắc chắn không phải là trường hợp. – BrainSlugs83

0

Bạn nên phản ánh trên các cụm từ miền hiện tại để thực hiện.

kiểm tra phản ứng của tôi trên this thread

2

Tôi đã sử dụng này thành công:

Type type = Type.GetType(typeName, AssemblyResolver, null); 

private static System.Reflection.Assembly AssemblyResolver(System.Reflection.AssemblyName assemblyName) 
{ 
    assemblyName.Version = null; 
    return System.Reflection.Assembly.Load(assemblyName); 
} 
+0

Đây là câu trả lời đúng. - Điều này đã cứu thịt xông khói của tôi. Cảm ơn! :) – BrainSlugs83

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