小编Shu*_*kEv的帖子

如何使用Unity映射泛型类型?

我正在尝试使用Unity Configuration向类属性添加依赖项,并且我尝试注入的类型也是通用的.

我有界面

public interface ISendMessage
{
    void Send(string contact, string message);
}
Run Code Online (Sandbox Code Playgroud)

public class EmailService : ISendMessage
{
    public void Send(string contact, string message)
    {
        // do
    }
}
Run Code Online (Sandbox Code Playgroud)

public class MessageService<T> where T : ISendMessage
{          
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过构造函数注入在其他类中使用它

public MyService(MessageService<ISendMessage> messageService)
{
}
Run Code Online (Sandbox Code Playgroud)

我怎么注射MessageService<EmailService>而不是MessageService<ISendMessage>

我试着通过app.config来做

<alias alias="MessageService'1" type="MyNamespace.MessageService'1, MyAssembly" />
    <alias alias="EmailMessageService'1" type="MyNamespace.MessageService'1[[MyNamespace.EmailService, MyAssembly]], MyAssembly" />
Run Code Online (Sandbox Code Playgroud)

我收到错误

无法解析类型名称或别名MessageService'1.请检查配置文件并验证此类型名称.

我如何通过MessageService<T>实现参数MessageService<EmailService>

谢谢

更新

我将我的课修改为以下内容:

public class MessageService<T> where T : …
Run Code Online (Sandbox Code Playgroud)

.net c# dependency-injection ioc-container unity-container

2
推荐指数
1
解决办法
4882
查看次数