2using System.Collections.Concurrent;
3using System.Reflection;
8#if FIRST_PASS == false && EXPORTER == false && IMPORTER == false
28 readonly ConcurrentDictionary<Type, Accessor> cache =
new ConcurrentDictionary<Type, Accessor>();
37 this.assembly = assembly ??
throw new ArgumentNullException(nameof(assembly));
47 where TAccessor : Accessor
49 return AccessorUtil.LazyGet(
ref accessor, () => (TAccessor)cache.GetOrAdd(typeof(TAccessor), Make));
57 Accessor Make(
Type accessorType)
59 return (Accessor)Activator.CreateInstance(accessorType, (AccessorTypeResolver)(t => assembly.GetType(t)));
IKVM.Reflection.Type Type
IKVM.Reflection.Assembly Assembly
Provides runtime access to type accessors.
AccessorCache(Assembly assembly)
Initializes a new instance.
static AccessorCache Get(ref AccessorCache cache, Assembly assembly)
Gets the set of accessors for a given assembly.
TAccessor Get< TAccessor >(ref TAccessor accessor)
Gets the instance of the specified accessor if not already resolved.