2010-06-03 3 views
1

Le code suivant ne peut pas compiler:erreur de compilation lors de l'utilisation Generics C# 3.5

class MyClass<T> : where T : MyClass <T>{} 

est-il un moyen de résoudre ce problème? Je l'ai utilisé la solution suivante, mais je me demandais s'il y a une meilleure façon

class MyClass <T> : IMyClass where T : IMyClass {} 
interface IMyClass {} 
+4

Il serait utile si vous avez accepté des réponses à certaines de vos questions précédentes ... – thecoop

+2

Pouvez-vous expliquer ce que l'usage que vous croyez ce modèle curieux a? Cela sent comme un abus de génériques. Il pourrait y avoir une meilleure façon de faire ce que vous voulez. –

+0

@Eric Lippert: C'est la manière standard de se référer à la classe 'current' ... comme 'this' pour l'objet courant. Je crois que c'est en fait assez commun. Pourquoi pensez-vous que ça sent? – dtb

Répondre

5

Vous avez besoin de mettre deux points après le nom de la classe que si vous voulez obtenir la classe d'une classe de base ou implémenter une interface :

class MyClass<T> where T : MyClass<T> 
//    ↑ 
//    no ':' here