gpt4 book ai didi

.net - 是否可以在运行时将接口(interface)分配给对象?

转载 作者:行者123 更新时间:2023-12-04 23:09:47 28 4
gpt4 key购买 nike

在反射(reflection)了我收到的所有精彩答案后,我的 previous question about modeling my code to maximize code re-use ,我开始想知道是否可以在运行时而不是在编码时将接口(interface)分配给对象。

my previous question 中的一段简化代码为例。 :

public class OutboxManager
{
private IVendorMessenger _VendorMessenger;

//This is the default constructor, forcing the consumer to provide
//the implementation of IVendorMessenger.
public OutboxManager(IVendorMessenger messenger)
{
_VendorMessenger = messenger;
}

public void DistributeOutboxMessages()
{
VendorMessenger.SendMessageToVendor()
_OutboxMgrDataProvider.MarkMessageAsProcessed(om)
}

}

目前,如果有人想使用这个类,他们必须编写一个实现 IVendorMessenger 的类。并在初始化期间作为参数提供:
 var MyOutboxManger = new OutboxManager(new MyVendorMessenger())

如果不是对接口(interface)参数进行硬编码,而是在运行时分配它怎么办?这样,我可以为实现 IVendorMessenger 的类编译一个 dll。 ,将其放入与 OutboxManagerExecutable 相同的文件夹中存在,它将在运行时连接所有内容。我想,使用这个逻辑,我可以找到一种方法来删除 IVendorMessenger 的多个实现。在同一个文件夹中,并将可执行文件设计为足够智能,以遍历所有适当的 dll 并相应地使用它们。

这种类型的功能在 .NET 4 中是否可行?

最佳答案

查看 Managed Extensibility Framework (MEF) .正如您所描述的那样,它可以自动组合您的应用程序的依赖项。它随 .NET 4.0 一起提供。

关于.net - 是否可以在运行时将接口(interface)分配给对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396359/

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