Hypothétiquement, ce serait pratique pour moi de faire ceci:
foo.GetColumnValues(dm.mainColumn, int)
foo.GetColumnValues(dm.mainColumn, string)
où la méthode GetColumns appellera une méthode différente à l'intérieur en fonction du type passé.
Oui, je pourrais le faire comme un drapeau booléen ou similaire, je me suis juste demandé s'il y avait un moyen de peut-être passer cela, puis j'ai demandé:
typeof (arg [1]) ou similaire ...
Je pourrais aussi remplacer la méthode, utiliser des génériques, etc. - Je sais qu'il existe différentes façons de faire cela, j'étais juste curieux de savoir si cela était possible.
c#
types
methods
parameters
Mark Mayo
la source
la source
foo.GetColumnValues<int>(dm.mainColumn)
peut être la voie à suivre.Réponses:
Il existe deux approches communes. Premièrement, vous pouvez passer
System.Type
Cela s'appellerait comme:
int val = (int)GetColumnValue(columnName, typeof(int));
L'autre option serait d'utiliser des génériques:
Cela a l'avantage d'éviter la boxe et d'offrir une certaine sécurité de type, et s'appellerait comme:
int val = GetColumnValue<int>(columnName);
la source
T Foo<T,U>(string arg1, U arg2)
ou similaireobject GetColumnValue(string columnName, Type type = object)
? Cela ne semble pas tout à fait fonctionner pour moi, mais il serait utile de savoir.foo.GetColumnValues(dm.mainColumn, typeof(string))
Vous pouvez également utiliser une méthode générique:
et vous pouvez ensuite l'utiliser comme:
la source
Vous pouvez passer un type comme argument, mais pour ce faire, vous devez utiliser
typeof
:La méthode devrait accepter un paramètre avec type
Type
.Si vous souhaitez ce comportement, vous ne devez pas passer le type en tant qu'argument, mais plutôt utiliser un paramètre de type.
la source
Ou en utilisant des génériques:
la source
Vous pouvez le faire, enveloppez-le simplement
typeof()
la source
Vous pouvez utiliser un argument de type Type - iow, passez typeof (int). Vous pouvez également utiliser des génériques pour une approche (probablement plus efficace).
la source
Utilisez des types génériques!
Et appelez-le comme ceci:
la source