Im Allgemeinen sollten Sie nicht dies tun - wenn ein Typ intern markiert wurde, bedeutet das, dass Sie nicht von außerhalb der Baugruppe verwendet werden sollen. Es könnte in einer späteren Version entfernt, geändert usw. werden.
jedoch Reflexion tut ermöglicht es Ihnen, Typen und Member zuzugreifen, die nicht öffentlich sind - nur für Überlastungen suchen, die nehmen ein BindingFlags
Argument und umfassen BindingFlags.NonPublic
in den Flaggen, die Sie weitergeben.
Wenn Sie den voll qualifizierten Namen des Typs (einschließlich der Baugruppeninformationen) haben, dann sollte nur Type.GetType(string)
Aufruf sollte funktionieren. Wenn Sie die Baugruppe im Voraus kennen und über einen öffentlichen Typ in dieser Baugruppe Bescheid wissen, ist die Verwendung von typeof(TheOtherType).Assembly
zum Abrufen der Baugruppenreferenz in der Regel einfacher, und Sie können dann Assembly.GetType(string)
aufrufen.
@dattebayo: nur Jon Antwort zu vervollständigen, beachten Sie, dass der Code in voller Vertrauen ausgeführt werden muss, oder Reflexion über nicht-öffentliche Mitglieder werden scheitern –
Manchmal muss man einfach, bis es kaputt geht. Ich habe einen WPF 'DataGrid' Befehl, dessen Parameter' SelectedItems' ist. In dem Befehl wird der Parameter als "Objekt" empfangen, aber vom Typ "SelectedCellCollection", auf den in meinem Code nicht zugegriffen werden kann. Ich brauche diese Art von Cheat in der Hoffnung, den 'object' Parameter auf eine' SelectedCellCollection' zu übertragen. – ProfK