<PackageReference Include="Castle.Windsor" Version="5.0.0" />

DefaultResourceSubSystem

Pendent
using Castle.Core.Resource; using System; using System.Collections.Generic; namespace Castle.MicroKernel.SubSystems.Resource { public class DefaultResourceSubSystem : AbstractSubSystem, IResourceSubSystem, ISubSystem { private readonly List<IResourceFactory> resourceFactories = new List<IResourceFactory>(); public DefaultResourceSubSystem() { InitDefaultResourceFactories(); } public IResource CreateResource(string resource) { if (resource == null) throw new ArgumentNullException("resource"); return CreateResource(new CustomUri(resource)); } public IResource CreateResource(string resource, string basePath) { if (resource == null) throw new ArgumentNullException("resource"); return CreateResource(new CustomUri(resource), basePath); } public IResource CreateResource(CustomUri uri) { if (uri == null) throw new ArgumentNullException("uri"); foreach (IResourceFactory resourceFactory in resourceFactories) { if (resourceFactory.Accept(uri)) return resourceFactory.Create(uri); } throw new KernelException("No Resource factory was able to deal with Uri " + uri); } public IResource CreateResource(CustomUri uri, string basePath) { if (uri == null) throw new ArgumentNullException("uri"); if (basePath == null) throw new ArgumentNullException("basePath"); foreach (IResourceFactory resourceFactory in resourceFactories) { if (resourceFactory.Accept(uri)) return resourceFactory.Create(uri, basePath); } throw new KernelException("No Resource factory was able to deal with Uri " + uri); } public void RegisterResourceFactory(IResourceFactory resourceFactory) { if (resourceFactory == null) throw new ArgumentNullException("resourceFactory"); resourceFactories.Add(resourceFactory); } protected virtual void InitDefaultResourceFactories() { RegisterResourceFactory(new AssemblyResourceFactory()); RegisterResourceFactory(new UncResourceFactory()); RegisterResourceFactory(new FileResourceFactory()); RegisterResourceFactory(new ConfigResourceFactory()); } } }