Hypothétiquement, ce serait pratique pour moi de faire ceci:
foo.GetColumnValues(dm.mainColumn, int) foo.GetColumnValues(dm.mainColumn, ssortingng)
où la méthode GetColumns appellera une méthode différente en fonction du type transmis.
Oui, je pourrais le faire en tant que drapeau booléen ou similaire, je me demandais simplement s’il y avait un moyen de peut-être passer ceci, puis demander:
typeof (arg [1]) ou similaire …
Je pourrais aussi remplacer la méthode, utiliser des génériques, etc. – Je sais qu’il y a différentes manières de faire cela, j’étais simplement curieux de savoir si c’était possible.
Il existe deux approches communes. Tout d’abord, vous pouvez passer System.Type
object GetColumnValue(ssortingng columnName, Type type) { // Here, you can check specific types, as needed: if (type == typeof(int)) { // ...
Ceci serait appelé comme: int val = (int)GetColumnValue(columnName, typeof(int));
L’autre option serait d’utiliser des génériques:
T GetColumnValue(ssortingng columnName) { // If you need the type, you can use typeof(T)...
Cela a l’avantage d’éviter la boxe et de fournir un certain type de sécurité, et serait appelé comme: int val = GetColumnValue
foo.GetColumnValues(dm.mainColumn, typeof(ssortingng))
Vous pouvez également utiliser une méthode générique:
public void GetColumnValues(object mainColumn) { GetColumnValues(mainColumn, typeof(T)); }
et vous pourriez alors l’utiliser comme:
foo.GetColumnValues(dm.mainColumn);
Vous pouvez passer un type en argument, mais pour cela vous devez utiliser typeof
:
foo.GetColumnValues(dm.mainColumn, typeof(int))
La méthode devrait accepter un paramètre avec le type Type
.
où la méthode GetColumns appellera une méthode différente en fonction du type transmis.
Si vous voulez ce comportement, vous ne devez pas passer le type en tant qu’argument, mais plutôt utiliser un paramètre de type.
foo.GetColumnValues(dm.mainColumn)
foo.GetColumnValues(dm.mainColumn, typeof(int)); foo.GetColumnValues(dm.mainColumn, typeof(ssortingng));
Ou en utilisant des génériques:
foo.GetColumnValues(dm.mainColumn); foo.GetColumnValues(dm.mainColumn);
Vous pouvez le faire, il suffit de l’envelopper dans typeof()
foo.GetColumnValues(typeof(int)) public void GetColumnValues(Type type) { //logic }
Vous pouvez utiliser un argument de type Type – iow, pass typeof (int). Vous pouvez également utiliser des génériques pour une approche (probablement plus efficace).