我有一个async
函数,可以从我的webservice
private static async Task<DataClass> retrievData(){
...
}
我需要在构造函数中使用此信息,但我无法阻止我的应用程序的其余部分
所以我想做点像
public class MyClass {
private DataClass theData;
public async Myclass(){
var dataTemp = await Server.retrievData();
if(dataTemp.ValidatorNumber == Server.Validator.FULL)
theData = dataTemp
...
}
但不允许这样做。有解决办法吗?
答案 0 :(得分:7)
您无法构建构造函数async
。但是,您可以创建async
工厂方法:
public class MyClass {
private DataClass theData;
private Myclass(DataClass theData) {
this.theData = theData;
}
public static async MyClass Create() {
var dataTemp = await Server.retrievData();
if(dataTemp.ValidatorNumber == Server.Validator.FULL)
return new DataClass(dataTemp);
... // Deal with the error here
}
}
现在,调用者可以异步创建MyClass
实例,如下所示:
var c = await MyClass.Create().ConfigureAwait(false);