Hypothetisch wäre es für mich praktisch, dies zu tun:
foo.GetColumnValues(dm.mainColumn, int)
foo.GetColumnValues(dm.mainColumn, string)
Dabei ruft die GetColumns-Methode je nach übergebenem Typ eine andere Methode auf.
Ja, ich könnte es als boolesche Flagge oder ähnliches tun. Ich habe mich nur gefragt, ob es einen Weg gibt, dies vielleicht zu bestehen, und dann gefragt:
typeof (arg [1]) oder ähnliches ...
Ich könnte auch die Methode überschreiben, Generika verwenden usw. - Ich weiß, dass es verschiedene Möglichkeiten gibt, dies zu tun. Ich war nur neugierig, ob dies möglich ist.
c#
types
methods
parameters
Mark Mayo
quelle
quelle
foo.GetColumnValues<int>(dm.mainColumn)
kann der richtige Weg sein.Antworten:
Es gibt zwei gängige Ansätze. Zuerst können Sie bestehen
System.Type
Dies würde heißen wie:
int val = (int)GetColumnValue(columnName, typeof(int));
Die andere Option wäre die Verwendung von Generika:
Dies hat den Vorteil, dass das Boxen vermieden wird und eine gewisse Typensicherheit geboten wird, und wird wie folgt bezeichnet:
int val = GetColumnValue<int>(columnName);
quelle
T Foo<T,U>(string arg1, U arg2)
oder ähnlichesobject GetColumnValue(string columnName, Type type = object)
? Das scheint für mich nicht ganz zu funktionieren, aber es wäre nützlich zu wissen.foo.GetColumnValues(dm.mainColumn, typeof(string))
Alternativ können Sie eine generische Methode verwenden:
und Sie könnten es dann verwenden wie:
quelle
Sie können einen Typ als Argument übergeben. Dazu müssen Sie jedoch Folgendes verwenden
typeof
:Die Methode müsste einen Parameter mit Typ akzeptieren
Type
.Wenn Sie dieses Verhalten wünschen, sollten Sie den Typ nicht als Argument übergeben, sondern stattdessen einen Typparameter verwenden.
quelle
Oder mit Generika:
quelle
Sie können dies tun, wickeln Sie es einfach ein
typeof()
quelle
Sie können ein Argument vom Typ Type - iow, pass typeof (int) verwenden. Sie können Generika auch für einen (wahrscheinlich effizienteren) Ansatz verwenden.
quelle
Verwenden Sie generische Typen!
Und nenne es so:
quelle