Je ne sais pas si cela a déjà été demandé, alors dirigez-moi vers une autre question si c'est le cas.Créer un paramètre de type basé sur une autre valeur
J'ai une méthode comme ceci:
private void SomeMethod<TLocation>(int x, int y) where TLocation : DataLocation
{
//
}
Dans la méthode que je souhaite l'appeler avec, j'ai un ENUM, et je veux appeler la méthode avec le paramètre de type.
public enum LocationType
{
Country,
State,
County,
City,
Neighborhood,
Street
}
Types de DataLocation:
DataCountry
DataState
DataCounty
DataCity
DataNeighborhood
DataStreet
Sachant que le paramètre de type est "Data" + nom de ENUM, est-il possible que je peux appeler dynamiquement ma méthode?
Ou devrais-je rester avec:
switch (locationType)
{
case LocationType.Country:
SomeMethod<DataCountry>(1, 2);
break;
case LocationType.State:
SomeMethod<DataState>(2, 4);
break;
// etc
}
EDIT:
On dirait que la réflexion est la seule façon. Je vais coller avec l'interrupteur.
En général, cela indique que 'SomeMethod' devrait vraiment être une méthode virtuelle sur un autre type de données. Il est difficile de savoir sans regarder votre hiérarchie réelle, cependant :) – porges
@Porges - ouais, je sais. :) Il s'agit d'une application ASP.NET MVC, et 'SomeMethod' est en fait une méthode spécifique à l'interface utilisateur (en configurant ViewModel), donc elle n'appartient pas au domaine (l'emplacement). – RPM1984