Kon*_*rin 11 ienumerable autofac
我在实现IMyService的容器服务中注册.
我对他们的订单有任何保证吗?
container.Resolve<IEnumerable<IMyService>>
Run Code Online (Sandbox Code Playgroud)
?
Dir*_*nné 11
就像我这样的人登陆这个页面的额外帮助...这是一个如何做到这一点的例子.
public static class AutofacExtensions
{
private const string OrderString = "WithOrderTag";
private static int OrderCounter;
public static IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle>
WithOrder<TLimit, TActivatorData, TRegistrationStyle>(
this IRegistrationBuilder<TLimit, TActivatorData, TRegistrationStyle> registrationBuilder)
{
return registrationBuilder.WithMetadata(OrderString, Interlocked.Increment(ref OrderCounter));
}
public static IEnumerable<TComponent> ResolveOrdered<TComponent>(this IComponentContext context)
{
return from m in context.Resolve<IEnumerable<Meta<TComponent>>>()
orderby m.Metadata[OrderString]
select m.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
我不是想自我推销,但我也创建了一个包来解决这个问题,因为我有类似的需求:https : //github.com/mthamil/Autofac.Extras.Ordering
它使用 IOrderedEnumerable<T> 接口来声明需要排序。
| 归档时间: |
|
| 查看次数: |
2453 次 |
| 最近记录: |