Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Metadata / CustomAssemblyResolver.cs
1 //---------------------------------------------------------------------
2 // <copyright file="CustomAssemblyResolver.cs" company="Microsoft">
3 //      Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //
6 // @owner       Microsoft
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9 namespace System.Data.Metadata.Edm
10 {
11     using System.Collections.Generic;
12     using System.Data.Entity;
13     using System.Diagnostics;
14     using System.Reflection;
15
16     internal class CustomAssemblyResolver : MetadataArtifactAssemblyResolver
17     {
18         private Func<AssemblyName, Assembly> _referenceResolver;
19         private Func<IEnumerable<Assembly>> _wildcardAssemblyEnumerator;
20
21         internal CustomAssemblyResolver(Func<IEnumerable<Assembly>> wildcardAssemblyEnumerator, Func<AssemblyName, Assembly> referenceResolver)
22         {
23             Debug.Assert(wildcardAssemblyEnumerator != null);
24             Debug.Assert(referenceResolver != null);
25             _wildcardAssemblyEnumerator = wildcardAssemblyEnumerator;
26             _referenceResolver = referenceResolver;
27         }
28
29         internal override bool TryResolveAssemblyReference(AssemblyName refernceName, out Assembly assembly)
30         {
31             assembly = _referenceResolver(refernceName);
32             return assembly != null;
33         }
34
35         internal override IEnumerable<Assembly> GetWildcardAssemblies()
36         {
37             IEnumerable<Assembly> wildcardAssemblies = _wildcardAssemblyEnumerator();
38             if (wildcardAssemblies == null)
39             {
40                 throw EntityUtil.InvalidOperation(Strings.WildcardEnumeratorReturnedNull);
41             }
42             return wildcardAssemblies;
43
44         }
45     }
46 }