使用类型的FullName:System.Collections.ObjectModel.ObservableCollection<string>
我似乎无法使GetType().FullName
工作,如果我使用List<string>
它可以正常工作,所以我是一个有点困惑。
下面的代码失败了,我不太清楚为什么,因为如果我使用List<string>
它可以正常工作:
System.Collections.ObjectModel.ObservableCollection<string> objectToTest = new System.Collections.ObjectModel.ObservableCollection<string>();
string typeFullName = objectToTest.GetType().FullName;
Type typeBack = Type.GetType(typeFullName);
if (typeBack == null)
throw new Exception(string.Format("Could not get type from: {0}", typeFullName));
答案 0 :(得分:1)
归结为类型; Type.GetType(string)
不检查任何地方(如果没有提示组件,它只检查调用程序集和一个或两个核心系统程序集)。如果您使用.AssemblyQualifiedName
而不是.FullName
,它将起作用(因为生成的字符串有额外的提示,允许Type.GetType(string)
首先解析正确的程序集。)
答案 1 :(得分:1)
您需要在AssemblyQualifiedName
而不是FullName
上调用Type.GetType,因为后者不会将程序集考虑在内