Próbuję zlokalizować typ w czasie wykonywania z listy zestawów; mój kod jest mniej więcej taki:Dlaczego funkcja Type.GetType() działa, a Assembly.GetType() nie działa?
foreach (Assembly assembly in assembliesToSearch)
{
Type t = assembly.GetType(assemblyName);
if (t != null)
{
return t;
}
}
, a problem, który mam, polega na tym, że t zawsze ma wartość zerową. Zabawy z debuggera i okna Pośredniczącej w VS2010, zauważyłem następujące kiedy mogę umieścić punkt przerwania wewnątrz pętli:
Type.GetType(typeof(MyNamespace.MyClass).AssemblyQualifiedName)
działa OK, ale
assembly.GetType(typeof(MyNamespace.MyClass).AssemblyQualifiedName)
nie (gdy montaż jest zestaw, który znam, zawiera klasę, której szukam - w debugerze mogę umieścić zegarek na assembly.GetTypes(), przejrzyj klasę, którą próbuję utworzyć i wywołaj assembly.GetType ("MyNamespace.MyClass , MyNamespace ")).
Czy ktoś wie, dlaczego przeszukiwanie wszystkich złożeń przy użyciu Type.GetType() działa, ale wyszukiwanie złożenia, które wiem, zawiera typ przy użyciu assembly.GetType() nie?
Dzięki za odpowiedź; moja początkowa próbka kodu nie pokazuje tego wyraźnie, ale w mojej pętli, w której dzwonię, Type t = assembly.GetType (assemblyName), assemblyName to "MyNamespace.MyClass, MyAssembly", więc według moich obliczeń powinien być zwrócony spodziewać Typ. –
@David: 'MyNamespace.MyClass, MyAssembly' nadal jest nazwą typu o kwalifikacjach zespołu. Musisz usunąć nazwę zestawu z tego łańcucha, aby działał z 'Assembly.GetType()'. – adrianbanks
@adrianbanks - gdzie dowiedziałeś się, że "Typ.GetType() najprawdopodobniej będzie używał referencji aktualnie montowanych do rozwiązania typu" - nie wydaje się być w [tutaj MSDN] (http: // msdn .microsoft.com/en-us/library/w3f99sx1 (v = vs.110) .aspx). Co to jest "obecny montaż"? W przypadku, gdy patrzę teraz, zespół z typem - który został znaleziony! - nie jest zbiorem z aktualnie wykonywaną metodą i nie jest odniesieniem do niego ... ale jest zbiorem na stosie wywołań.(Powód mojego pytania: Wersja w mojej nazwie zespołu jest błędna, ale typ został znaleziony.) – davidbak