【发布时间】:2018-06-03 02:43:00
【问题描述】:
我有一个通用方法:
protected override void Work<T>(T requestResult)
{
...
CallsSomeOtherMethodFromOtherClass(requestResult);
}
但 Xamarin 不会让我这样做。
它说它不能将 requestResult 转换为字符串(CallsSomeOtherMethodFromOtherClass 将字符串作为参数)。
但在这个特定的覆盖中,我确信类型 T 将是一个字符串。
我应该改变什么让编译器让我调用该方法:
CallsSomeOtherMethodFromOtherClass(string);
【问题讨论】:
-
如果你确定 T 总是一个字符串,为什么方法定义为泛型方法?编译器不知道 T 始终是一个字符串。
-
@mm8 在这个特殊的覆盖中,我知道它会是一个字符串。但在其他一些覆盖它不会!
-
好吧,那么您需要尝试在runtime 将requestResult 转换为字符串。就编译器而言,requestResult 可能是任何类型 T。
-
@mm8 我试过了! -> 工作((字符串)请求结果);但它说它不能将 T 转换为字符串
-
编译时还是运行时?你看到我的代码示例了吗...?也许你应该试试看。