Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Typecasting in C# (https://www.delphipraxis.net/127774-typecasting-c.html)

Phoenix 19. Jan 2009 12:35

Re: Typecasting in C#
 
Zitat:

Zitat von Neutral General
Ich weiß, dass es der falsche Weg wäre. Aber ich will im Prinzip der Socketklasse nur (im Moment) eine weitere Variable hinzufügen.

Du kannst Extension Methods dazu 'mißbrauchen'.

Grundidee:
Code:
public static class ValueHolder
{
   private static Dictionary<Object, String> _Values = new Dictionary<Object, String>();

   public static void SetValue(this Object obj, String value)
   {
      _Values.Add(obj, value);
   }

   public static String GetValue(this Object obj)
   {
      return _Values[obj];
   }

}
Das heisst Du hast zwei Extension Methods (getter und setter) und speicherst die Daten in einem Object-Value dictionary. Das Objekt selber nimmst Du als Schlüssel her. Somit geht das nicht nur auf dem Socket, sondern auf jedem beliebigen anderen Objekt auch.

Neutral General 19. Jan 2009 19:06

Re: Typecasting in C#
 
Hi,

Naja danke für den Code und den Ansatz, aber ich will in meinem Programm nicht zu rummurksen :mrgreen:

Der Code muss schon ordentlich werden. Ich muss mal gucken....

Phoenix 19. Jan 2009 19:14

Re: Typecasting in C#
 
Zitat:

Zitat von Neutral General
Naja danke für den Code und den Ansatz, aber ich will in meinem Programm nicht zu rummurksen :mrgreen:
Der Code muss schon ordentlich werden.

Das ist ordentlicher Code :)
Es gibt eben Dinge, die gehen ned anders. Es gibt eben leider kein ISocket Interface. Damit liesse sich sowas mittels Interface Delegation und Prism in ein paar Zeilen sehr elegant lösen. Aber Extension Methods sind durchaus legitim.

Dax 19. Jan 2009 19:41

Re: Typecasting in C#
 
Zitat:

Zitat von Phoenix
Es gibt eben Dinge, die gehen ned anders. Es gibt eben leider kein ISocket Interface. Damit liesse sich sowas mittels Interface Delegation und Prism in ein paar Zeilen sehr elegant lösen. Aber Extension Methods sind durchaus legitim.

Ja, schon, aber du verhinderst mit deinem Code effektiv die GC. Sowas müsste man auf deinem Weg dann über eine Map int -> List<Pair<WeakRef, String>> für Hashcode -> Zeugs machen.. Sonst ist das nicht ordentlich.

alzaimar 19. Jan 2009 21:21

Re: Typecasting in C#
 
Gibts in C# keine Class Helper? :gruebel: :mrgreen:

Neutral General 19. Jan 2009 21:26

Re: Typecasting in C#
 
Zitat:

Zitat von alzaimar
Gibts in C# keine Class Helper? :gruebel: :mrgreen:

Das hab ich mir auch schonmal gedacht -.-^^

Aber Class Helper können ja (leider) auch keine neuen Properties einführen :?

Phoenix 19. Jan 2009 21:27

Re: Typecasting in C#
 
Zitat:

Zitat von alzaimar
Gibts in C# keine Class Helper? :gruebel: :mrgreen:

Äh, die Extension Methods die ich gezeigt hab sind genau das.

Neutral General 19. Jan 2009 21:33

Re: Typecasting in C#
 
Mh.. Naja...

Aber "echte" Classhelper sind das nicht oder? Aufgerufen wird das ganze ja wie ich das sehe durch:

Code:
ValueHolder.SetValue(ASocket,"Value");
ooder?

alzaimar 19. Jan 2009 21:39

Re: Typecasting in C#
 
Oh, dann eine Decorator, den Du erweiterst (weiss nicht, wie das dann heißt). Was anderes fällt mir nicht ein.

Eine Socke(t) nun mal kein Kniestrumpf. Dazu ist er zu kurz.

@Phoenix: Dann hab ich das nicht kapiert. :drunken:

Dax 19. Jan 2009 21:54

Re: Typecasting in C#
 
Zitat:

Zitat von Neutral General
Aber "echte" Classhelper sind das nicht oder? Aufgerufen wird das ganze ja wie ich das sehe durch:

Code:
ValueHolder.SetValue(ASocket,"Value");
ooder?

Nein.
Code:
ASocket.SetValue("Value");
C#3+ vorrausgesetzt, natürlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz