2016-08-03 10:59:49 +00:00
|
|
|
|
//---------------------------------------------------------------------
|
|
|
|
|
// <copyright file="KnownAssemblyEntry.cs" company="Microsoft">
|
|
|
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
|
// </copyright>
|
|
|
|
|
//
|
2017-08-21 15:34:15 +00:00
|
|
|
|
// @owner Microsoft
|
|
|
|
|
// @backupOwner Microsoft
|
2016-08-03 10:59:49 +00:00
|
|
|
|
//---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
|
|
|
|
namespace System.Data.Metadata.Edm
|
|
|
|
|
{
|
|
|
|
|
internal sealed class KnownAssemblyEntry
|
|
|
|
|
{
|
|
|
|
|
private readonly AssemblyCacheEntry _cacheEntry;
|
|
|
|
|
private bool _referencedAssembliesAreLoaded;
|
|
|
|
|
private bool _seenWithEdmItemCollection;
|
|
|
|
|
|
|
|
|
|
internal KnownAssemblyEntry(AssemblyCacheEntry cacheEntry, bool seenWithEdmItemCollection)
|
|
|
|
|
{
|
|
|
|
|
Debug.Assert(cacheEntry != null, "Found a null cacheEntry");
|
|
|
|
|
_cacheEntry = cacheEntry;
|
|
|
|
|
_referencedAssembliesAreLoaded = false;
|
|
|
|
|
_seenWithEdmItemCollection = seenWithEdmItemCollection;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal AssemblyCacheEntry CacheEntry
|
|
|
|
|
{
|
|
|
|
|
get { return _cacheEntry; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool ReferencedAssembliesAreLoaded
|
|
|
|
|
{
|
|
|
|
|
get { return _referencedAssembliesAreLoaded; }
|
|
|
|
|
set { _referencedAssembliesAreLoaded = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool SeenWithEdmItemCollection
|
|
|
|
|
{
|
|
|
|
|
get { return _seenWithEdmItemCollection; }
|
|
|
|
|
set { _seenWithEdmItemCollection = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool HaveSeenInCompatibleContext(object loaderCookie, EdmItemCollection itemCollection)
|
|
|
|
|
{
|
|
|
|
|
// a new "context" is only when we have not seen this assembly with an itemCollection that is non-null
|
|
|
|
|
// and we now have a non-null itemCollection, and we are not already in AttributeLoader mode.
|
|
|
|
|
return SeenWithEdmItemCollection ||
|
|
|
|
|
itemCollection == null ||
|
|
|
|
|
ObjectItemAssemblyLoader.IsAttributeLoader(loaderCookie);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|