Parameterübergabe von C# (Exe) nach C#(DLL)

Athor

Mitglied
Guten Tag zusammen

Habe ein Problem bezüglich der Parameterübergabe an eine DLL.

Grobe Beschreibung:
Mein Hauptprogramm ist ein MDI. Die einzelnen Frame's (Child's) werden nicht direkt im Hauptprogramm eingefügt da es zuviele wären (ca. 600 Stück) sondern jedes Frame wird als DLL abgespeichert und dann vom MDI aufgerufen.

In ner DLL steht nun also ca folgendes:
Code:
public partial class xyDlg : Form
{
   private myClass m_oGlobale = null;

   public xyDlg()
   {
      InitializeComponent();
   }

   public void SetMyClass(ref myClass oGlobale)
   {
      m_oGlobale = oGlobale;
   }
}

Der Aufruf von der MDI aus sieht ca so aus:
Code:
xyDlg form = new xyDlg();
form.SetMyClass(ref m_oGlobale);
form.MdiParent = this;
form.Show();

Das Problem liegt nun da dass ich gerne eine Klasse namens myClass vom MDI an das Child übergeben möchte. In dieser Klasse stehen alle Daten drin die global sind und im ganzen MDI + Childs gültikeit haben. Also z.B Sprache, User der eingelogt ist usw.

Leider hat c# nicht so freude an der Parameterübergabe und meldet folgenden Fehler:
Fehler CS1503: 1-Argument: kann nicht von "ref myClass [pfad]" in "ref myClass [pfad]" konvertiert werden.

Habe es mal mit einem "bool" als Parameter versucht und dieser ging tadellos.
Muss ich Object anders behandeln als Parameter oder ist sowas überhaupt nicht möglich? Komme aus der c++ Welt und bin mir Pointer gewöhnt ;-)

Wäre toll wenn Ihr ne Idee oder einen Vorschlag habt wie man das Handhaben muss.

Grüsse und vielen Dank
Dani
 
Hi

Wie mir scheint, hast du in beiden Projekten eine Klasse "myClass" Deklariert und implementiert. Da dies für den Compiler zwei verschiedene Klassen sind, kann es diese auch nicht casten oder konvertieren.
 
Ja die Klasse kommt in Dll-Projekt vor und auch im MDI-Projekt. Es handelt sich um exact dieselbe Klasse, da sie via SourceSafe verwaltet wird und dem jeweiligen Projekt hinzugefügt wird.
 
Habe den Fehler gefunden. Dadurch dass die DLL auch in C# geschrieben wird, hat Visual Studio versucht die "using"-Sachen und die NameSpace Daten zusammenzufügen. Aber da die Klasse in beiden Projekten vorkam, konnte er dies wohl nicht tun, bzw. hat nicht gemerkt dass Sie schon existiert im Hauptprogram.

Hab nun im Hauptprogram(MDI) die Definition der Klasse entfernt und siehe da es klappt.
Ist nun zwar bisschen umständlich zu entwickeln, aber wird schon klappen ;-)

Grüss und ne angenehme Woche Euch allen.
 
Hi

Es liegt nicht daran, dass die Datei von SourceSafe verwaltet wird, sondern daran, dass die Klasse doppelt verhanden war.
 
Zurück