[C#] Problem Zugriff auf ein instanziertes Objekt

Xaicon

Erfahrenes Mitglied
Hallo zusammen,

irgendwie stell ich mich gerade blöd an, mit dem Zugriff unter C# auf instanzierte Objekte aus einem anderen "nicht verwannten" Objekt.

Zur Erklärung: Ich habe zwei Programme, zu denen ich mittels einer Dll eine Schnittstelle aufbauen will. Das Erste ist ein PDM-System, das Zweite eine 2D-Konstruktionsapplikation.
Meine Schnittstelle funktioniert soweit, dass ich aus dem PDM-System die 2D-App. starten kann, und die gewüschten Befehle ausführen kann.
Es wird geprüft, ob bereits eine Instanz der 2d-App. läuft, und ggf. eine neue Instanz gestartet. Letzendlich entsteht der Zurgiff auf die 2D-App. so:
Code:
namespace 2D_PDM_Interface
{
    [Guid("1e13436d-4a0d-31d5-ba34-41a3b51226da"), ComVisible(true)]
    public class PDM_Side_Class : CCustomerNetModuleBase
    {
      private void OpenAppAndDocument(string pathToDocument, bool readOnly, bool updateTitleBlock, bool closeDocument)
      {
        Application app = null;
        private const string m_appId = "Irgendeine.Application";
        app = Marshal.GetActiveObject(m_appId) as Application;
      }
    }
}

Den ganzen Code für die Fehlerabfangung und die anderen Funktionen die da noch laufen hab ich mal hier ausgelassen.
Nun ist jedenfalls die 2D-App gestartet und innerhalb dieser App wird ein Addin geladen, in dem zusätzliche, von mir erstellte Befehle sind.
Dieses AddIn greift wiederum auf verschiedene Klassen derselben Dll zu. z.B.:

Code:
namespace 2D_PDM_Interface
{
    [Guid("a7a1c19d-c5ea-4098-b732-4865cc8d73d4"), ComVisible(true)]
    class DSAddinCommand : IDisposable
    {
        public void ExecuteCommand()
        {
            // Tu hier etwas in der Klasse PDM_Side_Class
        }
    }
}

Und genau hier ist mein Problem. An der Stelle, an der der Kommentar steht, will ich auf eine Funktion in der oben erstellten Instanz der Klasse PDM_Side_Class zugreifen.
Ich komm nur leider nicht zurück zu dieser Instanz und eine neue Instanz zu erstellen löst mein Problem nicht.
Ich kann leider auch nicht die Instanz durchreichen, wie ich es sonst gemacht hätte, da ich dazwischen eine "Schicht" (Application app) der ich nicht beibringen kann ein object vom Typ 2D_PDM_Interface entgegenzunehmen.

Also nochmal kurz gesagt: Das PDM-System erstellt eine Instanz von 2D_PDM_Interface (Typ 2D_PDM_Interface), diese erzeugt eine Instanz vom Typ Application welche meiner 2D-App. entspricht.
Die 2D-App wiederrum erzeugt eine Instanz von DSAddinCommand. Jetzt muss ich von DSAddinCommand wieder zurück auf die Instanz von 2D_PDM_Interface, aber ich weiß nicht wie.

Meine Überlegungen / Fragen waren Folgende:
Es wird immer nur eine Instanz der Klasse 2D_PDM_Interface geben. Gibt es also eine Möglichkeit auf eine Instanz einer bestimmten GUID / Klasse zuzugreifen?
Kann ich mir irgendwie ein globales Objekt erstellen, in dem ich mir die Instanz "merke"? Ich dachte hier schon an einen eigenen Task, doch ich hoffe es gibt eine bessere Möglichkeit.

Ich hoffe die Masse an Text war halbwegs verständlich, und es hat jemand eine Idee dazu!? :)
 

Neue Beiträge

Zurück