// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Diagnostics; namespace System.Reflection.Runtime.Dispensers { // // For now, this is the dispenser policy used inside S.R.R. // internal sealed class DefaultDispenserPolicy : DispenserPolicy { public sealed override DispenserAlgorithm GetAlgorithm(DispenserScenario scenario) { switch (scenario) { // Assembly + NamespaceTypeName to Type case DispenserScenario.AssemblyAndNamespaceTypeName_Type: return DispenserAlgorithm.ReuseAsLongAsValueIsAlive; // Assembly refName to Assembly case DispenserScenario.AssemblyRefName_Assembly: return DispenserAlgorithm.ReuseAsLongAsValueIsAlive; // RuntimeAssembly to CaseInsensitiveTypeDictionary case DispenserScenario.RuntimeAssembly_CaseInsensitiveTypeDictionary: return DispenserAlgorithm.ReuseAlways; // Scope definition handle to RuntimeAssembly case DispenserScenario.Scope_Assembly: return DispenserAlgorithm.ReuseAlways; // Match policy used for runtime Assembly instances in other runtime flavors. default: return DispenserAlgorithm.CreateAlways; } } } } |