Проблема с разрешением объекта на основе определенного типа в контейнере Unity - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь разрешить тип, полученный в объекте, используя контейнер Unity, основываясь на string или int, которые я получу в этом объекте.Так что я могу реализовать логику на основе типа.Ниже я попытался зарегистрироваться в Unity, но при использовании typeof() в контейнере Unity я получаю сообщение об ошибке, в котором говорится, что я не могу это зарегистрировать.это с помощью единства?

public interface IActionResolver
{
    void Resolve(object item);
}

public class StringResolver : IActionResolver
{
    public void Resolve(object item)
    {
    }
}

public class IntResolver : IActionResolver
{
    public void Resolve(object item)
    {
    }
}

И в Unity я пытался зарегистрироваться, как это ..

unityContainer.RegisterType<IActionResolver, StringResolver>(typeof(string));
unityContainer.RegisterType<IActionResolver, IntResolver>(typeof(int));

1 Ответ

0 голосов
/ 28 ноября 2018

Вы хотите назвать свои регистрации (со строкой в ​​качестве имени, а не типа):

unityContainer.RegisterType<IActionResolver, IntResolver>(typeof(int).FullName);

и

IActionResolver GetResolver( object x )
{
    return unityContainer.Resolve<IActionResolver>( x.GetType().FullName );
}
...