Tôi cần phải tạo một loại từ tên đầy đủ của nó chỉ Ex: "System.String" hoặc "Tuple'2 [string, Mytype]". không có thông tin về hội đồng trong chuỗi. Đây là mã trông như thế nào.Tải một loại chung theo tên khi các đối số generics đến từ nhiều cụm
private static Type LoadType(string typeName)
{
// try loading the type
Type type = Type.GetType(typeName, false);
if (type != null)
return type;
// if the loading was not successfull iterate all the referenced assemblies and try to load the type.
Assembly asm = Assembly.GetEntryAssembly();
AssemblyName[] referencedAssemblies = asm.GetReferencedAssemblies();
foreach (AssemblyName referencedAssemblyName in referencedAssemblies)
{
type = referencedAssembly.GetType(typeName, false);
if (type != null)
return type;
}
throw new TypeLoadException(string.Format("Could not load the Type '{0}'",typeName));
}
phương pháp này hoạt động khi loại không chung chung. Nhưng đối với các kiểu generic lặp lại thông qua các assembly luôn thất bại vì không có assembly nào chứa tất cả các định nghĩa cần thiết để xây dựng kiểu.
Có cách nào để cung cấp nhiều bộ hội thảo cho độ phân giải loại khi gọi GetTypes không?
nếu bạn lập trình kéo các tên tệp và tạo tên kiểu chung để tạo, ví dụ: Ví dụ, hãy đảm bảo sử dụng AssemblyQualifiedName. –
Bạn sẽ làm gì về trường hợp có hai loại trong hai tham chiếu khác nhau có cùng tên chính xác? –
tất cả các loại được tiền tố với không gian tên của chúng để hy vọng điều này sẽ không xảy ra thường xuyên, việc deserialization tiếp theo sẽ thất bại. Tôi có thể quay trở lại và thử một loại khác trong một hội đồng khác và thử lại deserialization.Nhưng tôi biết nó nói dễ hơn làm. –