2017-05-18 2 views
0

Ich habe 2 Klassenbibliotheken (C#), sagen A und B.Erweiterung System-Namespace und verwenden Sie es als andere. DLL-Referenz

Bibliothek A hat einige Methoden drin. Diese Methoden benötigen und eine Erweiterungsmethode zum Chiffrieren/Entschlüsseln ihrer Werte.

Bibliothek B erledigt diesen Job. Diese Bibliothek verfügt über eine Erweiterungsmethode, erweitert sie jedoch im Namespace System.

namespace System 
{ 
    public static class EncryptDecrypt 
    { 
     public static string ToEncrypt(this Object toEncrypt) 
     { 

     } 

     public static string ToDecrypt(this string toDecrypt) 
     { 

     } 
    } 
} 

Der Grund, warum ich es war in System Namespace hatte während der ganzen Anwendung diese Erweiterung zu nutzen, ohne in using Abschnitt importieren zu müssen.

Bitte beachten

Bibliothek B wird immer als .dll Referenz verwendet werden, da es einen privaten Schlüssel (ein geheimer Schlüssel) für Chiffre/entschlüsseln hat. Also wo auch immer ich diese Bibliothek verwenden werde; Ich hätte einen öffentlichen Schlüssel, um die Dinge zu verschlüsseln.

Ich hatte alles eingerichtet und wenn ich es versuche; Es gibt mir Kompilierzeitfehler für jede Erweiterung, wo immer ich sie verwende.

Also, wenn ich es an einer Schnur item.Member_FirstName.ToEncrypt()

‚string‘ enthält keine Definition verwenden für ‚ToEncrypt‘ und keine Erweiterungsmethode ‚ToEncrypt‘ ein erstes Argument vom Typ ‚string‘ akzeptieren konnte gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Montage Referenz?)

Aber wenn ich auf die Definition dieser Erweiterungsmethoden gehen. Diese gehen auf korrekte Definition von ihnen in der Bibliothek ** B. **

Ich vermute, dass es Konflikte mit Bibliothek A's System-Namespace und B's System-Namespace?

Bitte korrigieren Sie mich.

+0

'using EncryptDecrypt' –

+0

@LeiYang, Dont brauchen, dass eigentlich als Namespace ist" System ". Ich habe das irgendwo in Frage gestellt. – Manoj

+0

Das System ist für die Microsoft Net Library reserviert. Sie haben keinen Zugriff zum Hinzufügen von Elementen zu dieser Bibliothek. Sie sollten also jede benutzerdefinierte Bibliothek Ihren eigenen Root-Namespace verwenden lassen. – jdweng

Antwort

3

Die Antwort finden Sie hier ...

https://msdn.microsoft.com/en-us/library/ms229026(v=vs.110).aspx

Core-Namensraum alle Systemnamensraum gehören, ohne Namensraum von die Anwendungsmodelle und die Infrastruktur Namensraum. Core Namespaces umfassen unter anderem System, System.IO, System.Xml und System.Net.

X Geben Sie keine Typennamen ein, die zu einem Konflikt mit Typen in den Core-Namespaces führen würden.

Die Kappen sind alle da, ich denke, dass sie wirklich wirklich nicht wollen, dass Sie das tun. Warum ? Denn wie könnte man dem .NET-Framework vertrauen, wenn es Baugruppen von Drittanbietern gibt, die ihre eigenen Methoden und Klassen in die Namespaces für das Kern-Framework einbringen?

Verwandte Themen