Ich habe eine Anwendung, die aus einem Windows-Formular-Projekt und einem Klassenbibliothek-Projekt besteht. Wenn es gestartet wird, legt die ausführbare Datei einen statischen Wert in der DLL fest.Wie kann ich auf eine laufende Instanz einer eigenständigen .NET-Datei von einer .NET Dll oder Exe zugreifen?
using MyClassLibrary;
namespace MyExeApplication
{
public partial class MainForm : Form
{
Hashtable ht = null;
void Form_Load(...)
{
ht = new Hashtable();
ht.add("1", "Open");
ht.add("2", "Close");
Calculate.BasicValues = ht;
}
public Hashtable GetBasicValues()
{
return ht;
}
}
}
namespace MyClassLibrary
{
public class Calculate()
{
public static Hashtable BasicValues {get; set;}
}
}
Nun angenommen, die Anwendung läuft im Speicher (die ausführbare Datei). Mein Zweck ist es, eine andere eigenständige Anwendung zu erstellen und den Wert BasicValues in der Funktion Calculate in der Klassenbibliothek zu verwenden.
using MyClassLibrary;
namespace TestApplication
{
public partial class MainForm : Form
{
private void TestValueFromDll()
{
System.Windows.Forms.MessageBox.Show("Values of Hashtable");
Hashtable ht = Calculate.BasicValues;
//The hashtable is null and values are not there
//The above will not work. Could I say something like
//Get the running instance of MyExeApplication
//and invoke GetBasicValues() ?
}
}
}
Ich denke, es funktioniert nicht, weil meine Testapplication die MyClassLibrary.dll in den Papierkorb-Ordner kopiert hat, in dem sich die ausführbare TestApplication.exe befindet. Daher wurde eine andere DLL verwendet (nicht die DLL, die von der ersten Anwendung MyExeApplication verwendet wurde).
Und meine Frage ist, wie kann ich dieses Problem lösen? Ist es möglich, Reflection zu verwenden und die Instanz von MyExeApplication abzurufen und die Werte von dort zu lesen? Gibt es einen anderen Weg?
Danke
Ich wollte etwas wie die COM aus dem Prozess-Server, wie Sie mit VB 6 sprechen. Leider hat .NET keinen äquivalenten Mechanismus. Es gibt Remoting, aber es ist nicht annähernd so einfach und einfach zu bedienen. –