Hallo zusammen,
leider ist der Titel nicht ganz so aussagekräftig, da mir hierzu nichts besseres eingefallen ist.
Zur Sache: Ich habe ein Interface IMessage, aus dem sich 3 Klassen ableite, die allerdings die gleichen Methoden benutzen. Zum Zwecke der Protokollierung erstelle ich beim Update ein 2tes Objekt, das den gleichen Typ wie das zu updatende Objekt bekommen soll.
Mal ein wenig Code fürs bessere Verständnis:
public void method(IMessage message)
{
IMessage source;
if(message.getType() == typeof(DefaultMessage))
source = new DefaultMessage();
else if(...);
GetSourceObject(source, message.id);
UpdateObject(source, message);
}
was mir hierbei nicht gefällt ist das casten per if abweisung, das müsste doch auch irgendwie einfacher möglich sein, oder?
hoffe ihr könnt mir da helfen 😃
Android & WP7 development | Bikube - Projektmanagement und Wiki
http://zero-level-studios.com
http://bikube.de
Am schönsten wäre fast, wenn IMessage eine Methode Clone oder CreateNew zur Verfügung stellt, und das jeweilige Objekt es selber macht. Damit hast du keine Probleme, wenn mal neue Klassen dazukommen.
Hallo Freeman4gu
public void method(IMessage message)
{
IMessage source = Activator.CreateInstance(message.GetType()) as IMessage;
if(message != null)
{
GetSourceObject(source, message.id);
UpdateObject(source, message);
}
}
Du kannst dir über Reflection ein Objekt von dem Typ anlegen.
Type t = typeof(myObject);
Assembly a = Assembly.GetAssembly(t);
AbstractClass newObject = a.CreateInstance(t.FullName);
Anonsten, falls du es in deinem Projekt brauchen kannst, wäre vlt das FACTORY Pattern für dich einsetzbar.
Hallo Freeman4gu,
warum verwendest du nicht einfach den is-Operator?
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
ok, sieht gut aus 😃 wieder etwas gelernt
vielen dank für die antworten
Android & WP7 development | Bikube - Projektmanagement und Wiki
http://zero-level-studios.com
http://bikube.de