Ich bin neu in C# und ich versuche herauszufinden, ob ich mehrere abgeleitete Klassenbibliotheken erstellen kann, die jeweils ein bestimmtes Element darstellen. Ich rufe die beiden Klassenbibliotheken ClassA & ClassB an. Jede Klasse teilt sich eine BaseClass (Namensraum BaseNS).C# mehrere Klassenbibliothek mit gemeinsamer Basisklasse/Namespace Problem
Ich erstellte dann eine C# App, die sowohl ClassA als auch ClassB betrifft. Dies führte zu einem Fehler, da beide die gleiche BaseClass haben. Kein Problem, ich habe 'Alias' auf der Referenz verwendet. Das hat gut funktioniert. So habe ich:
extern alias Class1Alias; extern alias Class2Alias; ...
Hier ist, wo ich auf ein Problem stoße.
Ich möchte eine Funktion machen, die BaseClass als Argument verwendet.
public void SetData (BaseClass bc) {} Dies kann nicht ausgeführt werden, da BaseClass aufgrund des Alias nicht definiert ist. So muss es sein: public void SetData (Class1Alias.BaseNameSpace.BaseClass bc) {}
Dies funktioniert, aber jetzt möchte ich folgendes tun: ...
Class1Alias.Class1Space.Class1 c1 = new Class1Alias.Class1Space.Class1();
Class2Alias.Class2Space.Class2 c2 = new Class2Alias.Class2Space.Class2();
das funktioniert
Class1Alias.BaseNameSpace.BaseClass bc = (Class1Alias.BaseNameSpace.BaseClass)c1;
SetData(bc);
dies nicht
Class1Alias.BaseNameSpace.BaseClass bc = (Class1Alias.BaseNameSpace.BaseClass)c2;
SetData(bc);
ich versuchte Casting Es geht um Class2Alias, das funktioniert, aber dann kann ich meine SetData-Funktion nicht aufrufen, weil sie eine Class1Alias will.
Gibt es sowieso um dies zu umgehen?
Nein, ich meinte "Klassenbibliotheken". Beide Klassenbibliotheken haben eine gemeinsame Basisklasse. –
Wollen Sie sagen, dass Sie zwei * Klassen * in separaten Klassenbibliotheken haben, die Sie von derselben Basisklasse ableiten wollen? Wenn ja, ist das in der Tat möglich. Es kann hilfreich sein, darauf hinzuweisen, dass zwei Klassen mit genau demselben Namen, die jedoch in verschiedenen Bibliotheken definiert sind, zwei verschiedene Klassen sind. –
Ja, mir ist klar, dass das mein Problem ist. Ich hatte gehofft, in der Lage zu sein, in die gemeinsame Basisklasse zu wechseln und sie zu benutzen. –