System.Collections.ObjectModel.ObservableCollection <string> FullName和Type.GetType失败</string>

时间:2012-01-07 12:19:47

标签: c# .net generics

使用类型的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));

2 个答案:

答案 0 :(得分:1)

归结为类型; Type.GetType(string)不检查任何地方(如果没有提示组件,它只检查调用程序集和一个或两个核心系统程序集)。如果您使用.AssemblyQualifiedName而不是.FullName,它将起作用(因为生成的字符串有额外的提示,允许Type.GetType(string)首先解析正确的程序集。)

答案 1 :(得分:1)

您需要在AssemblyQualifiedName而不是FullName上调用Type.GetType,因为后者不会将程序集考虑在内