public static void AddProvider(TypeDescriptionProvider provider, object instance)
{
if (provider == null)
{
throw new ArgumentNullException(nameof(provider));
}
if (instance == null)
{
throw new ArgumentNullException(nameof(instance));
}
bool refreshNeeded;
// Get the root node, hook it up, and stuff it back into
// the provider cache.
lock (s_providerTable)
{
refreshNeeded = s_providerTable.ContainsKey(instance);
TypeDescriptionNode node = NodeFor(instance, true);
TypeDescriptionNode head = new TypeDescriptionNode(provider);
head.Next = node;
s_providerTable.SetWeak(instance, head);
s_providerTypeTable.Clear();
}
if (refreshNeeded)
{
Refresh(instance, false);
}
}