[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на 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; } } |