J'essaie d'écrire une méthode générique pour éviter la duplication de code. La méthode générique doit pouvoir accepter l'un des trois types de vue de grille différents, mais je ne peux pas obtenir la distribution suivante au début de la méthode générique; Comment puis-je lancer "grille" à l'un des trois types afin que je puisse alors faire quelque chose avec eux. J'essaie toujours de saisir l'idée et le concept derrière Generics.C# Génériques - Accepter différents types
Répondre
Si BrandedGridView
et AdvBrandedGridView
héritent de GridView
vous pouvez ajouter une contrainte à votre
...<T> where T : GridView
Sinon, vous pouvez utiliser Convert.ChangeType
:
Essayez Convert.ChangeType:
if (typeof(T) == typeof(GridView))
{
var grid = (GridView)Convert.ChangeType(gridView, typeof(GridView));
}
elseif (typeof(T) == typeof(BrandedGridView))
{
var grid = (BrandedGridView)Convert.ChangeType(gridView, typeof(BrandedGridView));
}
Vous voulez contraindre le type T à quelque chose (probablement GridVi ew comme deux autres types en dérivent probablement) donc C# sait quelle méthode le T a, sinon il est juste de type Object.
public class MyClass<T> where T : GridView
S'il vous plaît lire article sur générique sur MSDN pour plus de détails - http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx#csharp_generics_topic4
Note: Comme mentionné ci-dessus C# est pas JavaScript et « var » ne signifie pas « un type » il est bien que plus court déclarer l'objet du type du côté droit. C'est à dire. dans var my = new List() var est synonim pour List.
« méthodes sont identiques à l'exception du type de paramètre »
Je pense que vous devriez juste faire une nouvelle méthode qui a le différent type de paramètre de la vue que les paramètres réels. Ce sont eux qui sont différents après tout.
- 1. Deux types d'itinéraires différents génériques
- 2. C# dans les types génériques
- 3. C# Types génériques Causes Ambiguïté
- 4. sérialisation .NET types génériques
- 5. Type commun pour les classes génériques de différents types
- 6. C#: membres génériques dans les types non génériques?
- 7. Types génériques récursifs
- 8. méthodes génériques dans les types non génériques
- 9. Utilisation Où spécifier différents génériques
- 10. Limites génériques avec types pré-génériques
- 11. Types génériques imbriqués CLI et méthodes génériques
- 12. Extrait Types génériques de génériques étendus
- 13. Découvrez les types génériques
- 14. Types et génériques anonymes
- 15. Coulée Types génériques
- 16. Collection de types génériques
- 17. Liste générique des différents types de C#
- 18. Définir différents types de nombres en C#
- 19. différents types de Cast en C#
- 20. GetType sur les types génériques
- 21. C# Génériques Question
- 22. Génériques Type paramètres et types
- 23. casting types génériques en Java
- 24. Précisions sur les types génériques
- 25. Dérivation de types génériques spécialisés
- 26. vb.net compare les types génériques
- 27. Comment comparer les types génériques?
- 28. Comment contraindre plusieurs types génériques?
- 29. Récupération de types d'argument génériques
- 30. sérialisation des types génériques - GWT
Les trois types ont-ils la même interface (pas l'interface dans un sens de langage, mais dans un sens API)? –
Vous ne pouvez pas déclarer un var et l'initialiser plus tard. Cela doit être fait en une seule étape.Juste comme var a = 100 –
Je ne suis pas sûr si elles observent toutes la même interface. J'ai actuellement trois méthodes distinctes acceptant chacune un type différent mais les propriétés de chaque type sont les mêmes, à savoir les méthodes sont identiques à l'exception du type de paramètre – Josata