gpt4 book ai didi

c# - 使用类(而不是接口(interface))来设置插件机制是否不正确?

转载 作者:行者123 更新时间:2023-11-30 21:43:55 25 4
gpt4 key购买 nike

假设这种假设情况:我有一个类层次结构:

public class MyBase : System.Windows.Forms.TreeNode 
{
public virtual void Init() {...}
}

现在我想允许第三方使用 MyBase 来开发他们的派生类,如下所示:

public class Drv1 : MyBase { public override void Init() {...} }
public class Drv2 : MyBase { public override void Init() {...} }

我希望我的应用程序能够使用 Drv1 和 Drv2 作为插件。

现在,我的问题是:

  1. 使用类(而不是接口(interface))来设置插件机制是否不正确(或不良做法)?

  2. 我没有使用接口(interface)来为第三方提供接口(interface)是不是我犯了一个错误? (因为我想说服别人给我的app开发插件)

  3. 如果问题 2 的答案是肯定的,我如何使用接口(interface)(因为 MyBase 是从 TreeNode 派生的)? (这个答案对我来说很重要)

非常感谢。

最佳答案

我使用以下规则:

如果 base 中需要任何代码,则转到 class


如果您只需要结构或需要“继承”多个,请使用interfaces


如果您需要两者,功能和多重继承都可以使用。


这实际上取决于您稍后对这些类执行的操作。

在您的情况下,您应该使用基础 class,因为 virtual 方法中有一些代码,并且您继承自第 3 方的类。

但是一旦您的业务类应该使用该类的不同实现,那么添加接口(interface)并在 IoC 或其他东西中使用它是值得的。

我认为仅仅为了接口(interface)而使用接口(interface)是不正确的方法。

关于c# - 使用类(而不是接口(interface))来设置插件机制是否不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41197977/

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