AbstractRegistration.cs
47 lines
| 1.5 KiB
| text/x-csharp
|
CSharpLexer
cin
|
r269 | using System; | |
using System.Xml.Serialization; | |||
using Unity.Lifetime; | |||
using Unity.Registration; | |||
namespace Implab.ServiceHost.Unity | |||
{ | |||
cin
|
r277 | /// <summary> | |
/// Базовая информаци о регистрации в контейнере: тип, имя и время жизни | |||
/// </summary> | |||
cin
|
r279 | public abstract class AbstractRegistration : AbstractContainerItem, IRegistration { | |
cin
|
r269 | ||
/// <summary> | |||
/// An optional name for a registration in the container | |||
/// </summary> | |||
[XmlAttribute("name")] | |||
public string Name { | |||
get; set; | |||
} | |||
cin
|
r277 | [XmlElement("signleton", typeof(SingletonLifetimeElement))] | |
cin
|
r271 | [XmlElement("context", typeof(ContextLifetimeElement))] | |
[XmlElement("container", typeof(ContainerLifetimeElement))] | |||
[XmlElement("hierarchy", typeof(HierarchicalLifetimeElement))] | |||
public LifetimeElement Lifetime {get; set;} | |||
/// <summary> | |||
/// A type specification for the service registration, | |||
/// </summary> | |||
cin
|
r273 | [XmlAttribute("type")] | |
public string RegistrationType { get; set; } | |||
cin
|
r271 | ||
cin
|
r279 | public virtual LifetimeManager GetLifetime(ContainerBuilder builder) { | |
return Lifetime?.GetLifetime(builder); | |||
} | |||
cin
|
r277 | public virtual Type GetRegistrationType(Func<string,Type> resolver) { | |
return resolver(RegistrationType); | |||
} | |||
cin
|
r279 | public virtual Type GetRegistrationType(ContainerBuilder builder) { | |
return builder.ResolveType(RegistrationType); | |||
cin
|
r277 | } | |
cin
|
r279 | ||
cin
|
r269 | } | |
} |