【发布时间】:2018-05-29 09:37:11
【问题描述】:
我有一个旨在与外部软件包集成的 Winforms 应用程序。该应用程序从这些包中读取数据并将其推送到我们的服务器,用户在该服务器上登录并使用我们的应用程序(App)。
public abstract ClassToImplement
{
public abstract void DefinedMethod1();
public abstract void DefinedMethod2();
}
当我们设计应用程序时,它打算完成 95% 的集成工作,其余 5%(实现类/App2)由熟悉第 3 方软件的顾问开发。
public class Implemented : ClassToImplement{
public override void DefinedMethod1(...);
public override void DefinedMethod2(...);
}
“App”输出一个类库,然后在实现 (App2) 中引用该类库。在我们的设计中,我们创建了一个抽象类并定义了方法。这个想法是顾问将下载实现类的 repo 并将应用程序作为参考。然后他们会为他们正在实现的方法编写必要的代码,编译并“瞧!”
出于显而易见的原因,我不想与外部开发人员共享源项目,否则我只会共享完整的解决方案并使用单个应用程序,虽然我知道他们可以通过 DLL 参考看到很多东西,我们更容易控制一切。
App自带问题:主应用算法需要实例化实现类,然后程序才能完美运行。
在 App 的 Form1.cs 中:
ClassToImplement impObj = new Implemented();
impObj.DefinedMethod1();
impObj.DefinedMethod2();
我面临的挑战是我无法在不实例化类的情况下构建“应用程序”来输出 DLL。我无法实例化实现类,因为我还没有代码(还)。
很高兴知道如何通过依赖(尚未)编写的代码来实现这种抽象,以及我正在尝试做的技术术语是什么?
【问题讨论】:
-
用接口代替抽象类怎么样?
-
@thehennyy 我不反对这样做,这将如何解决实例化问题?您能否使用我的代码示例分享帮助资源或答案?我很高兴尝试不同的方法
-
@MineR 您是否建议 App2 然后以某种方式“覆盖”空白实现?您是否有涵盖此内容的示例或文章,以便我了解该方法?
-
@Daniel 我误解了这个问题。
标签: c# winforms oop abstract-class