diff options
author | Eric Maupin <ermaup@microsoft.com> | 2018-01-12 23:07:37 +0300 |
---|---|---|
committer | Eric Maupin <ermaup@microsoft.com> | 2018-01-12 23:07:37 +0300 |
commit | 28109d00f713df204c6a8624c96b6baca9036386 (patch) | |
tree | 00e09a51cbe33da88dde638190737f4368c35fa1 /Xamarin.PropertyEditing.Tests/MockObjectEditor.cs | |
parent | 1e695e127b98b47ee4acc3652871a3d7f560be88 (diff) |
[Core] Add relevancy to IAssemblyInfo
Diffstat (limited to 'Xamarin.PropertyEditing.Tests/MockObjectEditor.cs')
-rw-r--r-- | Xamarin.PropertyEditing.Tests/MockObjectEditor.cs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Xamarin.PropertyEditing.Tests/MockObjectEditor.cs b/Xamarin.PropertyEditing.Tests/MockObjectEditor.cs index 879e340..230e00a 100644 --- a/Xamarin.PropertyEditing.Tests/MockObjectEditor.cs +++ b/Xamarin.PropertyEditing.Tests/MockObjectEditor.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Threading.Tasks; using Xamarin.PropertyEditing.Tests.MockControls; @@ -115,10 +116,17 @@ namespace Xamarin.PropertyEditing.Tests public Task<IReadOnlyList<ITypeInfo>> GetAssignableTypesAsync (IPropertyInfo property) { - if (this.assignableTypes == null || !this.assignableTypes.TryGetValue (property, out IReadOnlyList<ITypeInfo> types)) + if (this.assignableTypes == null) { + return Task.Run<IReadOnlyList<ITypeInfo>> (() => { + return AppDomain.CurrentDomain.GetAssemblies().SelectMany (a => a.GetTypes()).AsParallel() + .Where (t => property.Type.IsAssignableFrom (t) && t.Namespace != null && !t.IsAbstract && !t.IsInterface && t.IsPublic) + .Select (t => new TypeInfo (new AssemblyInfo (t.Assembly.GetName().Name, true), t.Namespace, t.Name)) + .ToList(); + }); + } else if (!this.assignableTypes.TryGetValue (property, out IReadOnlyList<ITypeInfo> types)) return Task.FromResult<IReadOnlyList<ITypeInfo>> (Enumerable.Empty<ITypeInfo>().ToArray()); - - return Task.FromResult (types); + else + return Task.FromResult (types); } #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously |