| 

.NET C# Java Javascript Exception

4
Moin,

ein besserer Betreff ist mir leider nicht eingefallen, ich hoffe hier guckt trotzdem jemand rein.

Ich habe eine Reihe von Klassen die eine Basisklasse implementieren, um Redundanzen zu vermeiden. Die Basisklasse liegt jedoch in einer anderen Assemb.y Die Aufteilung ist quasi wie folgt:

- Assembly A -> Klassen
- Assembly B -> Basisklasse

Mein Frontend nutzt nun die Klassen und hat natürlich auch einen Verweis auf Assembly A.

Und nun kommen wir zum Unterschied zwischen VB und C#: C# benötigt hier einen weiteren Verweis auf Assembly B. Ansonsten kommt halt eine Fehlermeldung das die Klassen von einer Basis erben und diese ja nicht bekannt sei. Obwohl ich von Aussen gar nicht vor habe, die Methoden der Basisklasse irgendwie zu benutzen (bzw. teilweise hat die auch gar keine Public Methoden, sondern nur Protected).

Nun habe ich ein paar Fragen dazu:

1) Wie kann ich das Verhalten in VB nachstellen? Option Strict On war es nicht.

2) Wie kann ich das Problem vermeiden? Ich habe mal testweise versucht, zusätzlich ein Interface IBasisklasse zu erstellen und die normalen Klassen erben dann von Basisklasse UND implementieren das Interface. Brachte mir bei C# jedoch auch nichts.

Ich wüsste anhand der Problemstellung nicht wirklich, wie ich Google damit füttern sollte. Von daher erhoffe ich mir hier Antworten. Dankeschön schonmal vorab.

LG,
Jens
30.11.2011
Jens Duczmal 2,6k 1 3 9
Zur Sicherheit: Referenzierst Du jeweils AssemblyB.dll, oder (in einem oder beiden Fällen) das VS-Projekt, das AssemblyB erstellt?
Matthias Hlawatsch 30.11.2011
Exe referenziert A. A referenziert B.

Wobei, falls Du das meinst, in der Tat habe ich testweise alle Projekte in einer Projektmappe und referenziere nicht die kompilierte DLL sondern das Projekt selbst (wobei VS ja im endeffekt wohl doch kompiliert)

Jens Duczmal 30.11.2011
Da Deine Rückfrage schon so klingt, als wäre das ein Unterschied: Ich teste mal beides aus.
Jens Duczmal 30.11.2011
Scheint keinen unterschied zu machen. Eine Edit-Funktion für eigene Kommentare wäre mal nett.
Jens Duczmal 30.11.2011
1 Antwort
1
VB.NET und C# verhalten sich hier wiedermal sehr unterschiedlich. Der Unterschied ist sehr einfach nachzuvollziehen und dennoch verblüffend.
Schau dir diesen Thread an, dann dürfte es etwas klarer sein: Question using Interfaces in C#
Die ersten Antworten sind nicht besonders aufschlussreich. Am relevantesten dürfte die letzte vom 31 August 2011 sein.
30.11.2011
Jürgen Luhr 7,1k 1 9
Interessant, Du meinst aber bestimmt die Antwort #6 vom 30.September. Egal. Hm....
Also in dem dort geschilderten Fall mit dem Interface liegt das selbst für mich klar auf der Hand, das da ein Verweis von Exe nach B (dort Lib2) her muss.
Jens Duczmal 30.11.2011

Ich mag zwar Automatiken, aber in diesem Fall empfinde ich das VB-Verhalten als sehr sehr schlecht. Ich hatte extra eine Basisklasse gebastelt, damit meine Kollegen später weniger implementieren müssen wenn sie diese einfach mitbenutzen. Und VB suggeriert mir hier wirklich, das ein Verweis auf Assembly A reicht. Und genau das wollte ich damit auch erreichen.

Nur weil ich jetzt eine Exe in C# schreibe bin ich darüber gestolpert. Und das finde ich sehr unschön. Zum einen weil meine "Lösung" eben keine darstellt, zum anderen hätte ich unsauber entwickelt ohne es zu merken.
Jens Duczmal 30.11.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH