我試圖通過Autofac來解析IEnumerable的依賴關係,但我需要能夠以某種方式對它們進行排序。我以爲我會使用Autofac的元數據來實現這一點,但我不能讓它工作:Autofac使用元數據排序
這是註冊碼:
builder.RegisterAssemblyTypes(assemblies.ToArray())
.AssignableTo<IDiscoverable>()
.As<IDiscoverable>()
.AsImplementedInterfaces()
.WithMetadata<DisplayOrderAttribute>(c => c.For(x => x.Order, ???));
的問號
所以我需要映射值的屬性在我的班上。
[DisplayOrder(5)]
public class Test : IDiscoverable
{
}
[DisplayOrder(1)]
public class Test : IDiscoverable
{
}
所以,當我解決這些問題,我能得到一個有序集合:
public class Client
{
public Client(IEnumerable<Meta<IDiscoverable>> discoverables)
{
//sort it using metadata here
var sortedDiscoverables = discoverables.Sort(x => x.Order).Select(x => x.Value);
}
}
反正來實現,在Autofac?
[更新]我可以執行以下操作並使用非類型化元數據,但似乎無法找到使用類型化元數據對象的方法。
.WithMetadata("Order", x => x.GetAttribute<DisplayOrderAttribute>().Order);