##// END OF EJS Templates
sync, minor changes
sync, minor changes

File last commit:

r279:8714471e8d78 v3
r284:bcb6c16f6fed v3
Show More
UnityContainerExtensions.cs
39 lines | 1.6 KiB | text/x-csharp | CSharpLexer
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);
}
}
}