Problem mit Generics
-
Hi,
ich habe eine Funktion, die ich gerne generisch machen möchte. Diese Funktion hat 2 Parameter und kann jedoch nur mit folgender Parameter-Combo arbeiten:
Parameter 1: System.Drawing.Rectangle
Parameter 2: intoder
Parameter 1: System.Drawing.RectangleF
Parameter 2: floatJetzt bin ich am überlegen wie ich die Where-Clausel richtig schreibe. Ich dachte mir es irgendwie wie folgt so:
static void Function<T, U> (T Rectangle, U Value) where T : System.Drawing.RectangleF and where U : float, where T : System.Drawing.Rectangle and where U : int { // Do Something }
Natürlich läuft das von der Syntax her schon nicht. Dazu müssen in der where-Klausel Interfaces eingetragen werden.
Hat jemand eine Idee wie ich dieses Konstrukt realisieren kann?
Danke euch im voraus und einen schönen Abend euch noch!
Euer Generic Freak
-
Das funktioniert nicht. Man kann die constraints beliebig mit mit UND und ORDER kombinieren und auch keinen constraint mit einem bestimmten value type erstellen. Von value types kann nicht geerbt werden, deshalb macht so ein constraint keinen Sinn (da könnte man gleich den konkreten Typ einsetzen).
Ich verstehe, was du vorhast. Es würde gehen, wenn System.Drawing.Rectangle irgendwie ein Interface IRectangle<int> implementieren würde, dann könntest du sagen:
Function<T>(IRectangle<T> rect, T val)
Aber dir bleibt jetzt nichts, als die zwei Overloads auszuschreiben.
-
Okay, das ist doof. Hmn, da bleibt mir wohl nichts anderes übrig als zu überladen
Trotzdem danke.