Bonjour,

Je vais essayer d'être clair !

Je voudrais développer une machine virtuelle avec un type de mesure générique mais avec un contrainte de type comparable !

Dans l'idée un code du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    Public Class Machine(Of C As Comparable(Of C))
    ...
    End Class
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
    Public Class Comparable(Of C)
 
        Public Property Value As C
        'implicit _Value variable
 
        Public Shared Operator =(Left As Comparable(Of C), Right As Comparable(Of C)) As Boolean
            Return Comparer(Of M).Default.Compare(Left.Value, Right.Value) = 0
        End Operator
 
        ...
   End Class
Bien quel est mon souci ?

Si je fais un test du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Public Class MachineLong
    Inherits Machine(Of Long)
End Class
J'obtiens
Erreur BC32044 L'argument de type 'Long' n'hérite pas ou n'implémente pas le type de contrainte 'Comparable(Of Long)'. Cube D:\Cube\Cube\Test\MachineLong.vb 1 Actif
Sachant que le type de mesure générique (ici C) peut être n'importe quoi, mais doit pouvoir être comparé à l'aide des opérateurs (=, <>, <=, >=,<,>)

Je pourrais passer par les objets mais c'est pas beau et surtout rien ne garanti à l'exécution que le type est vraiment comparable.
J'ai essayé une interface, mais on ne peut pas définir les opérateurs (ou pour être plus précis je ne sais pas si c'est faisable, ni comment le faire).

Bref, après 15 jours d'essais infructueux, et tous plus tordus les uns que les autres, j'avoue mon incompétence notoire et sans honte

D'où mes questions
- où est mon erreur et surtout pourquoi ?
- comment faire pour que ça marche ?
- ou comment imposer de développer les opérateurs ?

Conclusion : Au Secours, Help Please !

PS: en l'occurrence deux machines pilotables, une qui mesure une température et l'autre qui renvoie une liste de fréquences et intensités sonores au point considéré (X,Y et Z de type Long)
L'algorithme qui utilise ces machines pilotables, recherche les minimas et maximas (potentiellement multiples) dans le volume considéré.
Si à la base je n'arrive pas à le faire pour un type simple ...