forked from SharpRepository/SharpRepository
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUnityExtensions.cs
More file actions
29 lines (28 loc) · 1.93 KB
/
UnityExtensions.cs
File metadata and controls
29 lines (28 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections.Generic;
using SharpRepository.Repository;
using SharpRepository.Repository.Configuration;
using Unity;
using Unity.Injection;
using Unity.Lifetime;
namespace SharpRepository.Ioc.Unity
{
public static class UnityExtensions
{
/// <summary>
/// Registers in unity container all IRepository and ICompoundKeyRepository resolutions.
/// </summary>
/// <param name="container"></param>
/// <param name="configuration"></param>
/// <param name="repositoryName"></param>
/// <param name="lifetimeScopeTag">Accepts any MatchingScopeLifetimeTags scope enum tag</param>
public static void RegisterSharpRepository(this IUnityContainer container, ISharpRepositoryConfiguration configuration, string repositoryName = null)
{
container.RegisterType(typeof(IRepository<>), new InjectionFactory((c, t, n) => RepositoryFactory.GetInstance(t.GetGenericArguments()[0], configuration, repositoryName)));
container.RegisterType(typeof(IRepository<,>), new InjectionFactory((c, t, n) => RepositoryFactory.GetInstance(t.GetGenericArguments()[0], t.GetGenericArguments()[1], configuration, repositoryName)));
container.RegisterType(typeof(ICompoundKeyRepository<,,>), new InjectionFactory((c, t, n) => RepositoryFactory.GetInstance(t.GetGenericArguments()[0], t.GetGenericArguments()[1], t.GetGenericArguments()[2], configuration, repositoryName)));
container.RegisterType(typeof(ICompoundKeyRepository<,,,>), new InjectionFactory((c, t, n) => RepositoryFactory.GetInstance(t.GetGenericArguments()[0], t.GetGenericArguments()[1], t.GetGenericArguments()[2], t.GetGenericArguments()[3], configuration, repositoryName)));
container.RegisterType(typeof(ICompoundKeyRepository<>), new InjectionFactory((c, t, n) => RepositoryFactory.GetInstance(t.GetGenericArguments()[0], configuration, repositoryName)));
}
}
}