##// END OF EJS Templates
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)...
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete) Implab.ServiceHost: rewritten TypeReference (added support for nested types), stable API

File last commit:

r278:6691aff01de1 v3
r278:6691aff01de1 v3
Show More
FactoryRegistrationBuilder.cs
53 lines | 2.4 KiB | text/x-csharp | CSharpLexer
/ Implab.ServiceHost / Unity / FactoryRegistrationBuilder.cs
cin
Refactoring...
r277 using System;
using Implab.Components;
using Unity;
using Unity.Injection;
using Unity.Registration;
namespace Implab.ServiceHost.Unity
{
public class FactoryRegistrationBuilder : RegistrationBuilder {
internal InjectionMember Factory { get; private set; }
internal FactoryRegistrationBuilder(Type registrationType) : base(registrationType) {
}
cin
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)...
r278 /// <summary>
/// Задает делегат, который будет использоваться в качестве фабрики
/// для создания экземпляров, параметры делагата будет заполнены
/// соответствующими зависимостями.
/// </summary>
/// <param name="factory">Фабрика для создания экземпляров.</param>
cin
Refactoring...
r277 public void SetFactoryDelegate(Delegate factory) {
Safe.ArgumentNotNull(factory, nameof(factory));
Factory = new DelegateInjectionFactory(factory);
}
cin
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)...
r278 /// <summary>
/// Указывает зависимость типа <typeparamref name="T"/> с именем
/// <paramref name="dependencyName"/>, которая будет передана в качетве
/// параметра делегату <paramref name="factory"/>
/// </summary>
/// <param name="dependencyName">Имя зависимости</param>
/// <param name="factory">Фабрика для создания экземпляра</param>
cin
Refactoring...
r277 public void SetFactoryDependency<T>(string dependencyName, Func<T, object> factory) {
Safe.ArgumentNotNull(factory, nameof(factory));
Factory = new InjectionFactory((c,t,name) => {
var backend = c.Resolve<T>(dependencyName);
return factory(backend);
});
}
cin
Implab: added XmlDefaultSeializer (SerializersPool is now obsolete)...
r278 /// <summary>
/// Указывает зависимость, реализующую интерфейс <see cref="IFactory{TObj}"/>,
/// которая будет использоваться в качестве фабрики для создания объектов
/// </summary>
/// <param name="dependencyName"></param>
cin
Refactoring...
r277 public void SetFactoryDependency<TFac, TObj>(string dependencyName) where TFac : IFactory<TObj> {
Factory = new InjectionFactory(c => c.Resolve<TFac>(dependencyName).Create());
}
}
}