-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathUnitContainerCompositionExtensions.cs
More file actions
66 lines (62 loc) · 2.63 KB
/
UnitContainerCompositionExtensions.cs
File metadata and controls
66 lines (62 loc) · 2.63 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Security.Permissions;
using Microsoft.Practices.Unity;
namespace Soloco.Composition.Unity
{
/// <summary>
/// UnitContainer Extension methods for Composition Unity Extension.
/// </summary>
public static class UnitContainerCompositionExtensions
{
/// <summary>
/// Composes the specified composite type.
/// </summary>
/// <typeparam name="T">The composite interface type.</typeparam>
/// <param name="container">The container.</param>
/// <returns></returns>
[SecurityPermission(SecurityAction.LinkDemand)]
public static T Compose<T>(this IUnityContainer container)
{
if (container == null) throw new ArgumentNullException("container");
return container.Configure<CompositionExtension>().Compose<T>();
}
/// <summary>
/// Composes the specified composite type with an existing object as part of the composit.
/// </summary>
/// <typeparam name="T">The composite interface type.</typeparam>
/// <param name="container">The container.</param>
/// <param name="existing">The existing.</param>
/// <returns></returns>
[SecurityPermission(SecurityAction.LinkDemand)]
public static T Compose<T>(this IUnityContainer container, object existing)
{
if (container == null) throw new ArgumentNullException("container");
return container.Configure<CompositionExtension>().Compose<T>(existing);
}
/// <summary>
/// Registers a composite type in the container.
/// </summary>
/// <typeparam name="T">The type of the composite interface</typeparam>
/// <param name="container">The container.</param>
/// <returns></returns>
public static IUnityContainer RegisterComposite<T>(this IUnityContainer container)
{
if (container == null) throw new ArgumentNullException("container");
container.Configure<CompositionExtension>().RegisterComposite<T>();
return container;
}
/// <summary>
/// Registers a composite type in the container.
/// </summary>
/// <param name="container">The container.</param>
/// <param name="type">The type.</param>
/// <returns></returns>
public static IUnityContainer RegisterComposite(this IUnityContainer container, Type type)
{
if (container == null) throw new ArgumentNullException("container");
container.Configure<CompositionExtension>().RegisterComposite(type);
return container;
}
}
}