根据Unity容器中的特定类型解析对象的问题

时间:2018-11-28 11:53:23

标签: c# .net dependency-injection unity-container

我试图根据将在此对象中接收的stringint来解决使用Unity容器在对象中接收到的类型。这样我就可以根据类型实现逻辑。以下是我尝试在Unity中注册的内容,但是在Unity容器中使用typeof()时,出现错误,表明无法注册。

反正我可以团结起来吗?

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 :(得分:0)

您要命名注册(使用字符串作为名称,而不是类型):

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

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