Entwickler-Ecke
Basistechnologien - ErrorMessages für meine Klassen zur Verfügung stellen?
BlackMatrix - Sa 15.12.12 14:56
Titel: ErrorMessages für meine Klassen zur Verfügung stellen?
Hallo.
Ich habe eine Elternklasse, von denen >10 Kindklassen ableiten. Es können zusätzliche Kindklassen hinzukommen und ich möchte gerne, dass in meinen Kindklassen ErrorMessages zur Verfügung gestellt werden, die für alle Objekte dieser einen Kindklasse gleich sind (statisch). Dennoch möchte ich, dass beim Erstellen von neuen Kindklassen, auch die ErrorMessages überschrieben bzw. neu definiert werden. Demnach sollen meine ErrorMessages statisch und abstrakt sein.
Wie löst man das Problem? Über Interfaces?
Th69 - Sa 15.12.12 15:49
Hallo BlackMatrix,
wie genau sollen die ErrorMessages denn aussehen, d.h. sind dies einfach nur Strings oder verfügen diese über eine ID?
Und wie sollen diese konkret von den Kindklassen benutzt werden?
BlackMatrix - Sa 15.12.12 16:38
Die ErrorMessages sollen Pattern darstellen, die in den Kindklassen abgerufen werden können. Sprich, ich definiere eine handvoll, fester ErrorPattern und ab und an muss in den Methoden der Kindklassen der darin empfangene Stream hinsichtlich dieser ErrorMessages abgeprüft werden und an den Benutzer weitergereicht werden bzw. geloggt werden.
edit: Kann man das verstehen?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| public class KindKlasse : Elternklasse { protected override static ErrorPattern{get{return new string[]{"Failure \d+","Failure 123";}} public void Receive() { string s = "Sie haben Failure 123 ausgelöst!";
foreach(string errorPattern in ErrorPattern) if(Regex.IsMatch(s,errorPattern )) } } |
Th69 - So 16.12.12 14:17
Hallo,
leider verstehe ich es immer noch nicht richtig.
Generell denke ich bei ähnlichen Problemstellungen immer an Registrierung und Bereitstellung von Werten.
Da du ja von statisch sprichst, kommt mir als erstes der
static constructor [
http://msdn.microsoft.com/en-us/library/k9x6w0hc%28v=vs.100%29.aspx] in den Sinn.
Ich würde also in der Basisklasse eine
static List (oder
Dictionary) mit den Standard-Fehlermeldungen bereitstellen und dann in den Kindklassen jeweils im "static constructor" diese Basisklassen-Liste hernehmen (kopieren) und die entsprechenden Änderungen vornehmen (kommt darauf an, ob dies nur statische Texte sind oder sogar noch dynamisch zusammengebaut werden müssen).
Ein anderer Ansatz wäre die Registrierung, d.h. in der Basisklasse stellst du diese Liste bereit und bietest (
static protected) Methoden an, welche dann von den Kindklassen aufgerufen werden können:
-
RegisterMessage(Type type, string message): als
type übergibst du dann beim Aufruf jeweils
typeof(Kindklasse)
-
GetMessages(Type type): Rückgabe sind alle für diesen Typ registrierten Messages (sowie die Liste der Basisklassenmessages)
Die Basisklasse könnte dann intern ein
Dictionary(Type, List<string>) benutzen.
Ich hoffe, meine Erklärungen sind für dich verständlich und kommen deinem Problem nahe?!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!