我有一个async从我的webservice检索信息的功能
private static async Task<DataClass> retrievData(){
...
}
Run Code Online (Sandbox Code Playgroud)
我需要在我的构造函数上提供此信息,但我无法阻止我的应用程序的其余部分
所以我想做点什么
public class MyClass {
private DataClass theData;
public async Myclass(){
var dataTemp = await Server.retrievData();
if(dataTemp.ValidatorNumber == Server.Validator.FULL)
theData = dataTemp
...
}
Run Code Online (Sandbox Code Playgroud)
但这是不允许的.有解决办法吗?
你不能创建一个构造函数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
}
}
Run Code Online (Sandbox Code Playgroud)
现在调用者将有办法MyClass异步创建实例,如下所示:
var c = await MyClass.Create().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |