protected static IView GetControlInstance(IViewTemplate template)
{
Type templateType = template.GetType();
if (_controlTypeCache == null) _controlTypeCache = new Dictionary<Type, Type>();
Type viewType;
if (!_controlTypeCache.TryGetValue(templateType, out viewType))
{
lock (_controlTypeCache)
{
viewType = GetControlType(templateType);
_controlTypeCache.Add(templateType, viewType);
}
}
if (viewType == null)
return null;
else
{
object o = System.Activator.CreateInstance(viewType);
ViewPage p = o as ViewPage;
if (p != null)
p.SetTemplate(template);
else
{
ViewControl c = o as ViewControl;
if (c != null)
c.SetTemplate(template);
}
return (IView)o;
}
}