gpt4 book ai didi

.net - 如何使用 ImportMany 属性定义订单?

转载 作者:行者123 更新时间:2023-12-01 11:59:35 30 4
gpt4 key购买 nike

我刚刚接触 MEF,想知道如何定义使用 [ImportMany] 导出的集合的顺序?

我的意思是,如果我有两个实现接口(interface) IService 的类(Class1、Class2),并且每个实现都在两个不同的库中(尽管它们可能在同一个库中),我希望 Class2 实例是在 ImportMany 属性定义的 IEnumerable 集合中的 Class1 实例之前创建。所以它就像一个功能管道,其中 Class2 调用在 Class1 调用之前进行。

此外,我在另一个库中有另一个类(也实现了 IService 的 Class3),稍后我想介绍它(即一些日志记录实用程序),如何使它成为 ImportMany 集合中的第三个实例?

最佳答案

从 MEF 的角度来看,我认为您是从错误的角度来解决这个问题的。 MEF 鼓励接口(interface)和实现之间的分离。为了让消费者决定实现的顺序,它迫使它理解实现。

Visual Studio 采用的方法有点不同。它使用 OrderAttribute , 通常与 NameAttribute 结合使用让实现者指定一个顺序。然后,消费者可以使用名称和顺序的组合对 ImportMany 的实现者进行排序,而无需了解底层实现。

关于.net - 如何使用 ImportMany 属性定义订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990651/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com