我想知道什么是调用在override方法中返回Task的方法的理想方法?
例如:
public Task<string> GetName()
{
return Task.Run(() => {
return "Foo";
});
}
在我的一种方法中,我只是简单地这样做:
public async Task<string> DoSomething()
{
var res = await GetName();
return res + " rocks";
}
但是现在我面临的情况是有一个像这样的方法:
public virtual string DoSomething()
{
//does something...
}
在我的继承中,我需要覆盖此方法并执行一些操作并调用Task方法,因此我首先想到的是:
public override async Task<string> DoSomething()
{
//does something...
base.DoSomething();
var res = await GetName();
return res + " rocks";
}
这显然不可能,因为我将覆盖方法的返回值从字符串更改为任务字符串...
我该如何解决我的问题?
(注意:我不能修改基类,因为它不是我的。它是一个外部库。)
答案 0 :(得分:1)
你可以这样做:
public override string DoSomething()
{
//does something...
base.DoSomething();
return GetName().Result;
}
警告:这可能会导致死锁