c# - 基于 Unity 容器中的特定类型解析对象的问题
问题描述
我正在尝试使用 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));
解决方案
您想命名您的注册(使用字符串作为名称,而不是类型):
unityContainer.RegisterType<IActionResolver, IntResolver>(typeof(int).FullName);
和
IActionResolver GetResolver( object x )
{
return unityContainer.Resolve<IActionResolver>( x.GetType().FullName );
}
推荐阅读
- firebase - React native -Firestore - 根据用户表字段值检索身份验证用户电子邮件 ID
- python - 如何从模块外部读取与 __main__.py 相同模块中包含的文件?
- python - Python 提交表单并保持会话
- java - 如何使用 Spring JPA 规范按前缀搜索?
- swift - 如何使用 Alamofire 分段上传嵌套的 json 参数?
- django - m2m_change 信号在管理站点中不起作用,但在 shell 中起作用
- bash - ffmpeg / 批量添加视频水印
- sql - 如何连接具有多个条件的表?
- latex - LaTeX 中的字体缩放、变量、计算
- python - 来自 PyCryptodome 的 RSA.generate 的随机数问题