我有简单的策略课程。
public class LinkQualifier : ILinkQualifier
{
private readonly IEnumerable<IQualifier> _qualifiers;
public LinkQualifier(IEnumerable<IQualifier> qualifiers)
{
_qualifiers = qualifiers;
}
public IQualifier Qualify(Uri uri)
{
return _qualifiers.FirstOrDefault(q => q.CanQualify(uri));
}
}
Run Code Online (Sandbox Code Playgroud)
我如何在 MVC 核心 DI 容器中注册它?我发明了这样的东西:
services.AddTransient<ILinkQualifier, LinkQualifier>((ctx =>
{
var qualifiers = new List<IQualifier> {...};
return new LinkQualifier(qialifiers);
}));
Run Code Online (Sandbox Code Playgroud)
但这看起来很糟糕……有更好的解决方案吗?