【发布时间】:2018-07-28 20:25:31
【问题描述】:
.NET Core 中有没有办法注册一个泛型接口,并让它解析一个匹配某个实现的类。
比如我有如下界面:
public interface IMapper<TFrom, TTo>
{
}
我还有一个抽象类:
public abstract class Mapper<TFrom, TTo> : IMapper<TFrom, TTo>
{
protected Mapper()
{
// some generic stuff
}
public abstract TTo Map(TFrom);
}
然后我可以像这样创建一个实现:
public class UserMapper : Mapper<Domain.User, Entity.User>
{
public override Entity.User Map(Domain.User from)
{
// do mapping
}
}
有没有办法,使用默认的.NET Core DI注册IMapper<,>,让它自动解析类?
因此,例如,如果我会在代码中的某处执行此操作:
class SomeClass
{
public SomeClass(IMapper<Domain.User, Entity.User> mapper) {}
}
它以某种方式知道它应该解析类UserMapper<Domain.User, Entity.User>?
原因是手动注册每个映射器有点冗长,具体到一个实现。所以我希望Microsoft.DependencyInjection 足够聪明,能够以某种方式自动解决其实现。
【问题讨论】:
标签: c# dependency-injection .net-core inversion-of-control