コンストラクターにデータを入力しようとしているプロジェクトがあります。
public class ViewModel
{
public ObservableCollection<TData> Data { get; set; }
async public ViewModel()
{
Data = await GetDataTask();
}
public Task<ObservableCollection<TData>> GetDataTask()
{
Task<ObservableCollection<TData>> task;
//Create a task which represents getting the data
return task;
}
}
残念ながら、エラーが発生します。
修飾子
async
はこのアイテムには無効です
もちろん、標準のメソッドでラップしてコンストラクターから呼び出すと、次のようになります。
public async void Foo()
{
Data = await GetDataTask();
}
それはうまくいきます。同様に、私が古い裏返しの方法を使用する場合
GetData().ContinueWith(t => Data = t.Result);
それもうまくいきます。await
コンストラクター内から直接呼び出すことができないのはなぜだろうと思っていました。おそらく多くの(明白な)エッジケースとそれに対する理由があります、私は何も考えられません。説明も探し回っていますが、見つからないようです。