1 //---------------------------------------------------------------------
2 // <copyright file="CustomAssemblyResolver.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9 namespace System.Data.Metadata.Edm
11 using System.Collections.Generic;
12 using System.Data.Entity;
13 using System.Diagnostics;
14 using System.Reflection;
16 internal class CustomAssemblyResolver : MetadataArtifactAssemblyResolver
18 private Func<AssemblyName, Assembly> _referenceResolver;
19 private Func<IEnumerable<Assembly>> _wildcardAssemblyEnumerator;
21 internal CustomAssemblyResolver(Func<IEnumerable<Assembly>> wildcardAssemblyEnumerator, Func<AssemblyName, Assembly> referenceResolver)
23 Debug.Assert(wildcardAssemblyEnumerator != null);
24 Debug.Assert(referenceResolver != null);
25 _wildcardAssemblyEnumerator = wildcardAssemblyEnumerator;
26 _referenceResolver = referenceResolver;
29 internal override bool TryResolveAssemblyReference(AssemblyName refernceName, out Assembly assembly)
31 assembly = _referenceResolver(refernceName);
32 return assembly != null;
35 internal override IEnumerable<Assembly> GetWildcardAssemblies()
37 IEnumerable<Assembly> wildcardAssemblies = _wildcardAssemblyEnumerator();
38 if (wildcardAssemblies == null)
40 throw EntityUtil.InvalidOperation(Strings.WildcardEnumeratorReturnedNull);
42 return wildcardAssemblies;