Je voudrais construire une classe générique que je peux utiliser pour implémenter des propriétés paramétrées en C#. Le code de base que je veux est la suivante:Classe de propriété paramétrée C# implémentée via Generics?
public class ParameterizedProperty<typeReturn, typeIndexer> {
private typeReturn oReturn = default(typeReturn);
public typeReturn this[typeIndexer oIndexer] {
get { return oReturn[oIndexer]; }
set { oReturn[oIndexer] = value; }
}
}
Mais depuis typeReturn
est le compilateur est inconnu/sans restriction plotzing sur les lignes oReturn[oIndexer]
.
Alors, comment puis-je faire fonctionner cela? Ma première (bien, deuxième) pensée est d'utiliser Reflection afin de trouver conditionnellement l'indexeur (et d'élever une erreur si on n'en trouve pas) ou peut-être utiliser le modificateur where typeReturn: I???
sur la définition de classe. Mais si j'utilise le modificateur, que serait I???
?
Merci pour toutes les solutions à ce problème!
REMARQUE: La façon de trouver l'indexeur correctement via Reflection est (supposément) trouvée ici: http://www.dotnet247.com/247reference/msgs/3/16665.aspx (voir le dernier message). Comme Matthew a souligné ci-dessous ... J'ai quelque chose d'une faute de frappe/bug dans la description originale ... Ma propre faute, vraiment ... à l'origine l'écriture juste avant de se coucher! Le code que je veux ressemblerait plus à ceci:
public class ParameterizedProperty<typeReturn, typeIndexer> {
private typeReturn[] oReturn;
public ParameterizedProperty(typeReturn[] oSource) {
oReturn = oSource;
}
public typeReturn this[typeIndexer oIndexer] {
get { return oReturn[oIndexer]; }
set { oReturn[oIndexer] = value; }
}
}
... et que vas-tu parier que ça marche !?
Euh, pas tout à fait! Toujours se plaindre de typeIndexer
(vouloir un type "int-capable"), mais beaucoup plus mieux! J'ai également ajouté dans un constructeur pour résoudre ce problème "Je ne peux pas vraiment régler oReturn to anything" problème =)
Mais même cela ne semble pas tout à fait raison (Les tableaux sont toujours indexés par INTs, non? pas besoin de typeIndexer) ... Je vais devoir regarder à nouveau à Wurk demain =)
Est-ce que vous réalisez que l'indexeur de l'objet retournerait une instance du même type? Est-ce que cela signifie être un arbre/graphique? –
Je ne suis pas certain que je suis Matthew ... si l'oReturn sous-jacent était un bool [], le retour ... agh ... le voir maintenant =) C'était une faute de frappe/bug ... éditer la question originale en 3 .. .2 ... – Campbeln