myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Nach Refactoring Generisches Interface & Basisklasse - Gibt es weitere Verbesserungsmöglichkeiten?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Nach Refactoring Generisches Interface & Basisklasse - Gibt es weitere Verbesserungsmöglichkeiten?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
HeikoAdams HeikoAdams ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-4083.jpg


Dabei seit: 19.05.2017
Beiträge: 55
Entwicklungsumgebung: Visual Studio 2017 | VS Code
Herkunft: Coburg


HeikoAdams ist offline

Nach Refactoring Generisches Interface & Basisklasse - Gibt es weitere Verbesserungsmöglichkeiten?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
ich bin gerade beim Refactoring unserer Legacy-Produktverwaltungssoftware.
Dort gibt es einen Datenabglich mit anderen Systemen, wo für jede abzugleichende Tabelle eine seperate Klasse existiert.

Ich habe das jetzt so geändert, das ganz unten in der Hierarchie ein generisches Interface steht. Von diesem Interface wird eine generische Basisklasse abgeleitet, in welcher u.a. Eigenschaften, die von allen Abgleich-Klassen benötigt werden, definiert sind und die Funktionen aus dem Interface als abstract oder virtual Funktionen durchgeschleift werden. Von dieser Basisklasse werden dann die jeweiligen Klassen für die einzelnen Tabellen abgeleitet.

Gibt es noch etwas, was man an dieser Stelle besser machen könnte?
23.01.2019 09:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
LaTino LaTino ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-1871.jpg


Dabei seit: 03.04.2006
Beiträge: 2.958
Entwicklungsumgebung: VS 2008 / VS 2017 / VS Code
Herkunft: Thüringen


LaTino ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bei solchen Szenarien besteht hin und wieder auch die Notwendigkeit für ein Basisinterface, damit man beliebige Implementierungen (also auch für beliebige generische Parameter) in eine gemeinsame Collection packen kann.

Also das hier:

C#-Code:
interface IDataElement
{
    int Id { get; }
}

interface IGenericDataElement<T> : IDataElement where T: GenericBaseType
{
  T Element { get; }
}

//aufrufender Kontext
ICollection<IDataElement> list = new List<IDataElement>();
list.Add(new TableXObject());
list.Add(new TableYObject());
...

Fraglich ist dann auch, ob man das generische Interface überhaupt benötigt, wenn es eh nur eine direkte Implementierung (nämlich die abstrakte Basisklasse) gibt. Wenn nicht - weg damit, aber das kann man sicher auch anders sehen und ist eh nur Kosmetik.

LaTino

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LaTino am 23.01.2019 10:41.

23.01.2019 10:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team. Alle Rechte vorbehalten. 23.02.2019 05:29