Updated the PluginTypeResolver to have a generic way of instantiating the plugin types it has
already found. Have added some notes to some classes that need to be fixed up. Removed the PluginTypeResolver from the ApplicationContext since it is a utility and isn't exposing application objects.
This commit is contained in:
@@ -12,40 +12,15 @@ namespace Umbraco.Web
|
||||
/// </summary>
|
||||
public static class PluginTypeResolverExtensions
|
||||
{
|
||||
private static IEnumerable<IDocumentLookup> _lookups;
|
||||
private static readonly ReaderWriterLockSlim LookupsLocker = new ReaderWriterLockSlim();
|
||||
|
||||
/// <summary>
|
||||
/// Returns all available ILookup objects
|
||||
/// Returns all IDocumentLookup types
|
||||
/// </summary>
|
||||
/// <param name="resolver"></param>
|
||||
/// <returns></returns>
|
||||
internal static IEnumerable<IDocumentLookup> ResolveLookups(this PluginTypeResolver resolver)
|
||||
internal static IEnumerable<Type> ResolveLookups(this PluginTypeResolver resolver)
|
||||
{
|
||||
if (_lookups == null)
|
||||
{
|
||||
using (new WriteLock(LookupsLocker))
|
||||
{
|
||||
var lookupTypes = resolver.TypeFinder.FindClassesOfType<IDocumentLookup>();
|
||||
var lookups = new List<IDocumentLookup>();
|
||||
foreach (var l in lookupTypes)
|
||||
{
|
||||
try
|
||||
{
|
||||
var typeInstance = Activator.CreateInstance(l) as IDocumentLookup;
|
||||
lookups.Add(typeInstance);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//TODO: Need to fix logging so this doesn't bork if no SQL connection
|
||||
//Log.Add(LogTypes.Error, -1, "Error loading ILookup: " + ex.ToString());
|
||||
}
|
||||
}
|
||||
//set the global
|
||||
_lookups = lookups;
|
||||
}
|
||||
}
|
||||
return _lookups;
|
||||
return resolver.ResolveTypes<IDocumentLookup>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user