gpt4 book ai didi

.net - 添加插件支持 : Interface or Base class to inherit?

转载 作者:行者123 更新时间:2023-12-02 15:42:45 25 4
gpt4 key购买 nike

我正在向我的 .NET 应用程序添加插件支持。基类对我来说听起来很合理,因此人们可以继承它并覆盖某些调用,也可以保留默认功能或可以使用一些内部辅助函数。

为什么我要选择接口(interface)而不是插件基类来继承?您能告诉我应该选择哪种设计以及为什么吗?

最佳答案

您应该考虑查看 System.Addin (MAF) 命名空间或托管扩展性框架 (MEF)。 MEF 将是首选,尽管它仍处于预发布阶段,因为它比 MAF 简单得多。这些选择中的任何一种都可以简化您需要执行的大量管道工作,以便加载加载项并与其交互。

至于在接口(interface)和抽象类之间做出选择,如果您选择 MAF 或 MEF,其中一些会为您做好。在这种情况下最基本的区别是,通过提供抽象基类,您可以为自定义插件(由您或其他开发人员编写)提供继承点,并确保某些方法/属性提供默认行为并强制派生类实现某些所需的方法/属性。缺点是您仅限于单个基类。

接口(interface)绕过了单一基类的限制,仍然为自定义插件提供继承点,并确保实现某些方法/属性,但不能提供任何类型的默认行为。您也不能在接口(interface)中指定除公共(public)成员之外的任何内容,而抽象类可以具有抽象或虚拟非公共(public)成员(通常是 protected )。

关于.net - 添加插件支持 : Interface or Base class to inherit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/543116/

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