微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用泛型类型参数重载?

我想添加泛型类型方法DoSomething< T>,但为了向后兼容,我希望它只是从具有相同名称的现有方法传递泛型类型的type参数.

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);
}

但是,< dataType>在新的DoSomething中抛出以下类型检查错误:“预期输入名称名称空间”.

有人可以帮助我理解我的想法中的差距,使上述样本成为类型检查错误吗?我正在做的只是……糟糕的设计?

解决方法

泛型是关于在编译时知道类型 – 你只知道执行时的类型.

有两种方法可以解决这个问题:

>使通用代码调用非通用代码.这很容易,但你不会有泛型的任何好处.
>使用反射从非泛型代码调用通用代码.这是繁琐的,也不会表现得那么好,但你可以弃用非通用代码并最终将其删除.

或者你现在可以删除它,并修复一切:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐