[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Поскольку невозможно сделать асинхронный конструктор, так как после возврата конструктора вы должны получить полностью инициализированный объект. А не объект, который на самом деле будет правильно инициализирован в какой-то неопределенный момент в будущем.
Можно использовать статический асинхронный метод, который возвращает экземпляр класса, созданный приватным конструктором. Это не очень элегантно, но работает.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class ViewModel { public ObservableCollection<TData> Data { get; set; } //статический асинхронный метод, который ведет себя как конструктор async public static Task<ViewModel> BuildViewModelAsync() { ObservableCollection<TData> tmpData = await GetDataTask(); return new ViewModel(tmpData); } //приватный конструктор, вызываемый методом async private ViewModel(ObservableCollection<TData> Data) { this.Data = Data; } } |