2009-09-12 17 views
6

Gibt es eine Möglichkeit, eine .NET-Assembly nur für autorisierte Quellen zugänglich zu machen?Zugriff auf .NET-Assembly beschränken?

Ich meine, ich möchte eine DLL, die Komponenten enthält, aber ich möchte nicht, dass jemand diese Komponenten aber die anderen DLLs EXEs in meiner Lösung verwenden kann. Ich möchte, dass sie in getrennten DLLs sind.

Die Einschränkung des Namespace kann auch eine gute Idee sein, wenn diese Funktion dort existiert.

Gibt es einen Weg?

+0

verwendet die OSe Access Control List OK? Holen Sie den Benutzer und überprüfen Sie den Zugriff auf einige bekannte Datei, dir, etc ... – kenny

+0

alles ist willkommen, bitte posten Sie eine Antwort Ihrer Idee, so dass die Leute abstimmen können. – Shimmy

Antwort

6

Sie können interne Klassen erstellen. Und geben Sie Ihren angegebenen Assemblys den Zugriff auf diese Klassen mit dem Attribut InternalsVisibleTo.

Die Baugruppe sollte stark benannt sein. Weitere Informationen zum Attribut finden Sie unter this article.

+0

Siehe auch http://www.bryancook.net/2008/05/tdd-tips-internalsvisibleto-keep-your.html – TrueWill

5

Das Problem mit internen Klassen ist Intern hat keine Bedeutung in IL und die Klassen können über Reflexion aufgerufen werden. Daher ist die Verwendung von InternalsVisibleTo mehr ein Helfer für den Compiler als alles andere.

Sie können einen Schritt weiter gehen, indem Sie StrongNameIdentityPermission verwenden, der den öffentlichen Schlüssel der stark benannten Assembly überprüft, der den Code aufruft - wenn der öffentliche Schlüssel nicht übereinstimmt, wird eine Sicherheitsausnahme ausgelöst. Dies wird auch dann erzwungen, wenn der Code über Reflektion aufgerufen wird.

Verwandte Themen