2012-01-07 21 views
1

を失敗:System.Collections.ObjectModel.ObservableCollection<string>私はGetType().FullNameが動作するように見えることはできません、私はList<string>を使用する場合、それだけで正常に動作しますので、私少し混乱しています。System.Collections.ObjectModel.ObservableCollection <string>タイプのフルネームを使用する場合はフルネームとType.GetTypeは

以下のコードは失敗し、私は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

考慮にアセンブリを取ることはありませんそして、あなたはどのような例外を取得んようFullNameの代わりにAssemblyQualifiedNameにType.GetTypeを呼び出すことになるでしょうか? – KMan

+0

「タイプ取得できませんでした:System.Collections.ObjectModel.ObservableCollection'1 [[System.String、mscorlib、バージョン= 4.0.0.0、Culture =ニュートラル、PublicKeyToken = b77a5c561934e089]] '' しかし、 @ Marc-Gravellは次のように提案しています。「AssemblyQualifiedName''が動作します。 – Nisd

答えて

1

それはであるダウンタイプに来ます。 Type.GetType(string)はどこでもチェックされません(アセンブリがヒントされていない場合は、呼び出し元のアセンブリと1つまたは2つのコアシステムアセンブリだけがチェックされます)。 .FullNameの代わりに.AssemblyQualifiedNameを使用すると、生成される文字列にType.GetType(string)が最初に正しいアセンブリを解決できるようにするためのヒントが追加されます。

関連する問題