Biorąc że mam typ „Wibble.Wobble”, który występuje w zespole „foo.bar” istniejącej klasy/metody analizowania pełną nazwę Type
I że montaż nie jest ładowany do Główne zastosowania kontekst obciążenie
jest tam obecny mechanizm publicznego w celu analizowania następujący ciąg w jego kolejnych części:
"Wibble.Wobble, Foo.Bar, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xyz"
powodem jest to, że z prośbą Potrzebuję załadować wiele typów w czasie wykonywania, z których niektóre mogą być w bieżącym kontekście obciążenia. Inne mogą wymagać załadowania z zewnętrznego zespołu.
Wiem, jak załadować typy z bieżącego kontekstu obciążenia Type.GetType("typename")
, Wiem, jak załadować zespół i uzyskać typ z niego Assembly.LoadFile("xyz").GetType("abc")
. Mam problemy z tym, że jeśli spróbujesz załadować typ z zestawu , nie powinien on być w pełni kwalifikowaną nazwą, gdzie możesz, gdy używasz Type.GetType
.
Samo rozwiązanie nie powinno być aż tak skomplikowane, wystarczy podzielić ciąg przed pierwszym przecinkiem. Jednak chciałem się dowiedzieć, czy istnieje sposób uzyskania w pełni kwalifikowanej nazwy jako reprezentacji obiektu, więc nie musiałem tego robić i pomogłoby to w zlokalizowaniu właściwego zespołu bez konieczności przechodzenia przez cały katalog.
indexof daje pierwsze wystąpienie przecinka, który może być użyty jako separator w ogólnych argumentach. To nie byłoby ładne –
@DavidSchmitt Fair point, nie miałem jeszcze do czynienia z tym scenariuszem, ale zaktualizowałem przykład użycia LastIndexOf zamiast IndexOf. Dzięki za wskazówkę. – Bronumski
Z LastIndexOf, może po prostu nigdy nie zadziałać, rozważ System.String, mscorlib, wersja = 4.0.0.0, Culture = neutralny, PublicKeyToken = b77a5c561934e089 ostatni indeks woluminu po prostu dostanie część PublicKeyToken – Alex