private async void RequestTypes() { if (Property == null) { return; } if (Editors.Count == 0) { SuggestedTypes = new ObservableCollectionEx <ITypeInfo> (); AssignableTypes = new AsyncValue <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > ( Task.FromResult <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > ( new Dictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > ())); SelectedType = null; return; } var types = Editors.GetCommonAssignableTypes(Property, childTypes: true); var assignableTypesTask = types.ContinueWith(t => t.Result.GetTypeTree(), TaskScheduler.Default); AssignableTypes = new AsyncValue <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > (assignableTypesTask); var results = await types; var suggested = new ObservableCollectionEx <ITypeInfo> (results.SuggestedTypes); if (results.AssignableTypes.Count > suggested.Count) { suggested.Add(OtherType); } SuggestedTypes = suggested; SelectedType = (results.SuggestedTypes.Count > 0) ? results.SuggestedTypes[0] : null; }
private async Task <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > GetAssignableTypesAsync() { AssignableTypesResult result = await Editors.GetCommonAssignableTypes(Property, childTypes : false).ConfigureAwait(false); return(result.GetTypeTree()); }