50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
//----------------------------------------------------------------
|
|
// <copyright company="Microsoft Corporation">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//----------------------------------------------------------------
|
|
|
|
namespace Microsoft.Activities.Presentation.Xaml
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
internal class ResolverCache
|
|
{
|
|
private Dictionary<Type, WeakReference> cache;
|
|
|
|
public ResolverCache()
|
|
{
|
|
this.cache = new Dictionary<Type, WeakReference>();
|
|
}
|
|
|
|
public void Update(Type type, ResolverResult result)
|
|
{
|
|
SharedFx.Assert(type != null, "type should not be null");
|
|
SharedFx.Assert(result != null, "result should not be null");
|
|
|
|
if (this.cache.ContainsKey(type))
|
|
{
|
|
this.cache[type] = new WeakReference(result);
|
|
}
|
|
else
|
|
{
|
|
this.cache.Add(type, new WeakReference(result));
|
|
}
|
|
}
|
|
|
|
public ResolverResult Lookup(Type type)
|
|
{
|
|
SharedFx.Assert(type != null, "type should not be null");
|
|
|
|
WeakReference value;
|
|
if (this.cache.TryGetValue(type, out value))
|
|
{
|
|
return value.Target as ResolverResult;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|