38 lines
1.1 KiB
C#
38 lines
1.1 KiB
C#
using System;
|
|
using ModestTree;
|
|
|
|
namespace Zenject
|
|
{
|
|
[NoReflectionBaking]
|
|
public class SingleProviderBindingFinalizer : ProviderBindingFinalizer
|
|
{
|
|
readonly Func<DiContainer, Type, IProvider> _providerFactory;
|
|
|
|
public SingleProviderBindingFinalizer(
|
|
BindInfo bindInfo, Func<DiContainer, Type, IProvider> providerFactory)
|
|
: base(bindInfo)
|
|
{
|
|
_providerFactory = providerFactory;
|
|
}
|
|
|
|
protected override void OnFinalizeBinding(DiContainer container)
|
|
{
|
|
if (BindInfo.ToChoice == ToChoices.Self)
|
|
{
|
|
Assert.IsEmpty(BindInfo.ToTypes);
|
|
|
|
RegisterProviderPerContract(container, _providerFactory);
|
|
}
|
|
else
|
|
{
|
|
// Empty sometimes when using convention based bindings
|
|
if (!BindInfo.ToTypes.IsEmpty())
|
|
{
|
|
RegisterProvidersForAllContractsPerConcreteType(
|
|
container, BindInfo.ToTypes, _providerFactory);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|