在C#中只传入一个types作为参数
假设这样做对我来说很方便:
foo.GetColumnValues(dm.mainColumn, int) foo.GetColumnValues(dm.mainColumn, string)
GetColumns方法将根据传递的types调用不同的方法。
是的,我可以做一个布尔标志或类似的,我只是想知道是否有办法或许通过这个,然后问:
typeof(arg [1])或类似的…
我也可以重写方法,使用generics等 – 我知道有不同的方法来做到这一点,我只是好奇,如果这是可能的。
有两种常用的方法。 首先,你可以传递System.Type
object GetColumnValue(string columnName, Type type) { // Here, you can check specific types, as needed: if (type == typeof(int)) { // ...
这将被称为像int val = (int)GetColumnValue(columnName, typeof(int));
另一种select是使用generics:
T GetColumnValue<T>(string columnName) { // If you need the type, you can use typeof(T)...
这有避免拳击和提供一些types安全的优势,并将被称为像这样: int val = GetColumnValue<int>(columnName);
foo.GetColumnValues(dm.mainColumn, typeof(string))
或者,你可以使用一个通用的方法:
public void GetColumnValues<T>(object mainColumn) { GetColumnValues(mainColumn, typeof(T)); }
然后你可以像这样使用它:
foo.GetColumnValues<string>(dm.mainColumn);
您可以传递一个types作为参数,但要这样做,您必须使用typeof
:
foo.GetColumnValues(dm.mainColumn, typeof(int))
该方法需要接受types为Type
的参数。
GetColumns方法将根据传递的types调用不同的方法。
如果你想要这种行为,那么你不应该将types作为parameter passing,而应该使用types参数。
foo.GetColumnValues<int>(dm.mainColumn)
foo.GetColumnValues(dm.mainColumn, typeof(int)); foo.GetColumnValues(dm.mainColumn, typeof(string));
或者使用generics:
foo.GetColumnValues<int>(dm.mainColumn); foo.GetColumnValues<string>(dm.mainColumn);
你可以做到这一点,只是把它包装在typeof()
foo.GetColumnValues(typeof(int)) public void GetColumnValues(Type type) { //logic }
您可以使用Type – Iowtypes的参数,传递typeof(int)。 您也可以使用generics(可能更有效)的方法。