internal FrameworkElement CreateElement(IDeferredQuickInfoContent deferredContent)
        {
            var deferredContentFullName = deferredContent.GetType().FullName;
            Lazy <IDeferredQuickInfoContentToFrameworkElementConverter> converter;

            if (!_convertersByTypeFullName.TryGetValue(deferredContentFullName, out converter))
            {
                // The content must be of a type we didn't have MEF deferred metadata for. Realize the
                // ones without MEF metadata, forcing everything to load.
                foreach (var converterWithoutMetadata in _convertersWithoutMetadata)
                {
                    _convertersByTypeFullName[converterWithoutMetadata.Value.GetApplicableType().FullName] =
                        new Lazy <IDeferredQuickInfoContentToFrameworkElementConverter>(() => converterWithoutMetadata.Value);
                }

                Contract.ThrowIfFalse(_convertersByTypeFullName.TryGetValue(deferredContentFullName, out converter));
            }

            return(converter.Value.CreateFrameworkElement(deferredContent, this));
        }
Beispiel #2
0
 internal FrameworkElement CreateElement(IDeferredQuickInfoContent deferredContent)
 {
     return(_convertersByType[deferredContent.GetType()].CreateFrameworkElement(deferredContent, this));
 }