假设这样做对我来说很方便:
foo.GetColumnValues(dm.mainColumn, int)
foo.GetColumnValues(dm.mainColumn, string)
其中GetColumns方法将根据传递的类型在内部调用不同的方法。
是的,我可以用布尔标志或类似的方式来做,我只是想知道是否有一种方法可以通过它,然后问:
typeof(arg1)或类似类型...
我还可以重写方法,使用泛型等-我知道有不同的方法可以做到这一点,我只是好奇这是否可能。
发布于 2012-06-09 04:22:43
有两种常见的方法。首先,您可以传递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));
另一种选择是使用泛型:
T GetColumnValue<T>(string columnName)
{
// If you need the type, you can use typeof(T)...
这样做的优点是避免了装箱,并提供了一些类型安全,可以这样调用:int val = GetColumnValue<int>(columnName);
发布于 2012-06-09 04:22:22
foo.GetColumnValues(dm.mainColumn, typeof(string))
或者,您可以使用泛型方法:
public void GetColumnValues<T>(object mainColumn)
{
GetColumnValues(mainColumn, typeof(T));
}
然后你可以像这样使用它:
foo.GetColumnValues<string>(dm.mainColumn);
发布于 2012-06-09 04:22:22
可以将类型作为参数传递,但要这样做,必须使用typeof
foo.GetColumnValues(dm.mainColumn, typeof(int))
该方法需要接受类型为Type
的参数。
,其中GetColumns方法将根据传递的类型在内部调用不同的方法。
如果您想要此行为,则不应将类型作为参数传递,而应使用类型参数。
foo.GetColumnValues<int>(dm.mainColumn)
https://stackoverflow.com/questions/10955579
复制相似问题