Ich arbeite an einem Projekt, das Entwicklern von Drittanbietern eine API mit Vorlagenklassen zur Verfügung stellt, von denen sie erben können. Dieser Entwickler muss den Hauptprozess darüber informieren, dass er einen Typ erstellt hat, der von einer dieser Vorlagen erbt. Dazu ruft der Entwickler eine Funktion:Aufrufen externer Typen, die Dateien über den relativen Pfad aufrufen
internal Dictionary<string, Type> Templates = new Dictionary<string, Type>();
public void RegisterTemplate(string ID, Type template)
{
...
Templates.Add(ID, template);
...
}
Hinweis: RegisterTemplate ist Mitglied des Programms nicht von einer externen Bibliothek.
Funktionen in dem Typ ein Entwickler bietet in dieser Funktion relative Pfade wie "Audio/somefile.wav" oder "Models/somefile.vox". Der Fremdentwickler kompiliert ihre vererbenden Klassen in eine DLL und legt sie in einem vom Programm getrennten Ordner ab, um später vom Programm importiert zu werden.
Wenn das Programm die oben fett gedruckten Funktionen aufruft, wird der zugeordnete Pfad relativ zu dem Programm sein, das den Typ aufruft, oder relativ zu der DLL, von der der aufgerufene Typ stammt?
Zur Klarstellung: eher als die relativen Pfade des ausgeführten Assembly oder DLL, ich bin in Bezug auf die Pfade innerhalb der DLL, wie so genannten sprechen:
File.Open("Audio/somefile.wav");
Wenn diese Code wird von einer Funktion innerhalb der DLL aufgerufen, und der Typ, der diesen Code enthält, wird von Code in meiner ausführbaren Datei aufgerufen, wird dieser Pfad relativ zu der ausführbaren Datei, die den Type aufgerufen hat, oder der DLL, die den aufgerufenen Typ enthält?
Sind die DLLs auch in C# geschrieben? – Fruchtzwerg
@Fruchtzwerg Mein gesamter Code ist in C#. Der Third-Party-Code kann eine beliebige .NET-Sprache ihrer Wahl sein, vorausgesetzt, dass er in eine verwaltete Bibliothek wie C# kompiliert wird. – TristenHorton
@TristenHorton es ist nicht relativ zu ihnen.Es ist relativ zu ** Anwendung aktuellen Verzeichnis ** (überprüfen Sie Environment.CurrentDirectory) und es ist nicht gebunden an die Ausführung oder Eintrag Montageort (aber ** kann ** bezogen werden, um Montageort, nur nicht darauf angewiesen). –