【发布时间】:2009-12-08 19:45:58
【问题描述】:
我想添加一个泛型类型方法DoSomething<T>,但为了向后兼容,我希望它简单地从具有相同名称的现有方法中传递泛型类型的类型参数。
public void DoSomething<T>(Data data)
{
//do something with Data, it depends on the type of T
}
public void DoSomething(Data data, Type dataType)
{
DoSomething<dataType>(group);
}
但是,新的 DoSomething 中的 <dataType> 会引发以下类型检查错误:“需要类型名称或命名空间。”
有人可以帮助我理解我的思维差距导致上述示例成为类型检查错误吗?我正在做的只是……糟糕的设计吗?
【问题讨论】:
-
dataType 仍然是 Type 对象的实例...不是可以用来声明新的泛型对象的类型定义。您需要使用反射调用方法的通用版本。
-
实际上,这不起作用还有第二个原因。您正在尝试从静态方法调用实例方法。
-
@Max:谢谢,我更新了我的示例,使其与我更感兴趣的问题正确相关。
标签: c# generics parameters overloading