constraint für eigene class & double

22/12/2008 - 18:19 von Thomas Martin Mädzulat | Report spam
hallo,
wie kann ich eine generische class Vector2D<CoordinateType> so einschrànken,
daß sie für eigene definierte classen UND double gültigkeit hat?
danke für antwort,
gruß Martin
 

Lesen sie die antworten

#1 Frank Dzaebel
23/12/2008 - 15:13 | Warnen spam
Hallo Thomas,

wie kann ich eine generische class Vector2D<CoordinateType> so
einschrànken, daß sie für eigene definierte classen UND double
gültigkeit hat?



über die Mittel der "Einschrànkungen für Typparameter" geht
das nicht exakt, sondern nur als Übermenge.
Du hast bzgl. der Einschrànkungen nur diese Möglichkeiten:

[Einschrànkungen für Typparameter (C#-Programmierhandbuch)]
http://msdn.microsoft.com/de-de/lib...73970.aspx

[Vorteile und Einschrànkungen von Generika]
http://msdn.microsoft.com/de-de/lib...72194.aspx

Diese obigen Mittel sind also *sehr* beschrànkt.
___________

Mögliche exakte Verfahren wàren zum Beispiel ein
(eigenes) AddIn oder Assembly-Enhancing:

[Erweitern Sie Ihre Assemblies nach dem Kompilieren]
http://msdn.microsoft.com/de-de/lib...79376.aspx

also, indem Du ein Attribut vor die Klasse schreibst, und
das spàter auswertest.

Oder vielleicht über Methoden des GAT. Downloads in der Reihenfolge:

[Download details: Guidance Automation Extensions (GAX) - February 2008
Release]
http://www.microsoft.com/downloads/...20D9714E4E

[Download details: Guidance Automation Extensions for Visual Studio 2008 and
Visual Studio 2008 Service Pack 1 Update (GAXP1409)]
http://www.microsoft.com/downloads/...4784598BF0

[Download details: Guidance Automation Toolkit (GAT) for Visual Studio
2008 - February 2008 Release]
http://www.microsoft.com/downloads/...laylang=en

Webseite dazu:

[Guidance Automation Extensions and Guidance Automation Toolkit]
http://msdn.microsoft.com/en-us/vst...18948.aspx

[MSDN Webcast Serien - Das Guidance Automation Toolkit]
http://www.microsoft.com/germany/ms...09-02.mspx

___________

Als letztes noch mal eine Möglichkeit über OOP:

private void Form1_Load(object sender, EventArgs e)
{
Vector2D<double> v1 = Vector2D<double>.CreateDouble();
// Folgendes wird und soll nicht zur Compilezeit funktionieren:
// Vector2D<int> v2 = Vector2D<int>.CreateDouble();
// Vector2D<int> v3 = Vector2D<int>.CreateInstance<int>();
Vector2D<Form> v4 = Vector2D<Form>.CreateInstance<Form>();
}

class Vector2D<T>
{
private Vector2D() { }

public static Vector2D<double> CreateDouble()
{
return new Vector2D<double>();
}

public static Vector2D<TC> CreateInstance<TC>() where TC : class
{
return new Vector2D<TC>();
}
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen