|
|
using System.IO;
|
|
|
using Unity;
|
|
|
|
|
|
namespace Implab.ServiceHost.Unity
|
|
|
{
|
|
|
public static class UnityContainerExtensions
|
|
|
{
|
|
|
public static IUnityContainer LoadXmlConfiguration(this IUnityContainer container, string file, ContainerConfigurationSchema schema) {
|
|
|
Safe.ArgumentNotNull(container, nameof(container));
|
|
|
var builder = new ContainerBuilder(container,schema);
|
|
|
builder.LoadConfig(file);
|
|
|
return builder.Container;
|
|
|
}
|
|
|
|
|
|
public static IUnityContainer LoadXmlConfiguration(this IUnityContainer container, Stream stream, ContainerConfigurationSchema schema) {
|
|
|
Safe.ArgumentNotNull(container, nameof(container));
|
|
|
Safe.ArgumentNotNull(stream, nameof(stream));
|
|
|
|
|
|
if (schema == null)
|
|
|
schema = ContainerConfigurationSchema.Default;
|
|
|
|
|
|
var builder = new ContainerBuilder(container,schema);
|
|
|
var config = (ContainerElement)schema.Serializer.Deserialize(stream);
|
|
|
if (config.Items != null) {
|
|
|
foreach(var item in config.Items)
|
|
|
item?.Visit(builder);
|
|
|
}
|
|
|
|
|
|
return builder.Container;
|
|
|
}
|
|
|
|
|
|
public static IUnityContainer LoadXmlConfiguration(this IUnityContainer container, Stream stream) {
|
|
|
return LoadXmlConfiguration(container, stream, ContainerConfigurationSchema.Default);
|
|
|
}
|
|
|
|
|
|
public static IUnityContainer LoadXmlConfiguration(this IUnityContainer container, string file) {
|
|
|
return LoadXmlConfiguration(container, file, ContainerConfigurationSchema.Default);
|
|
|
}
|
|
|
}
|
|
|
}
|