【发布时间】:2016-02-12 20:58:21
【问题描述】:
我有一个从 Web 服务、服务或 Windows 窗体应用程序调用的类库。
对于 windows 窗体应用程序,我想为 web 服务和服务显示一个是/否消息框,我只想假设是。
我知道我可以重构我的代码以使用抽象层,例如
var provider = new MessageBoxProvider(); // Or other implementation
var result = provider.QueryResult(...);
但除此之外:
有没有更好的方法来检查代码是否从 Windows 应用程序调用?目前我在做
System.Windows.Forms.Application.OpenForms.Count > 0
【问题讨论】:
-
我不确定您的库中是否需要任何 ui 逻辑,是否可以将其重构为仅返回一条消息并让调用者处理它?
-
这看起来像是一个 XY 问题,并且存在许多解决方案来防止您首先需要将库代码绑定到特定的 UI 框架。除了抽象层之外,您还可以创建调用应用程序可以订阅的事件或回调。
-
另请参阅Work out the type of c# application a class contained in a DLL is being used by,其中还存在所有当前答案以及有关潜在缺点等的更多信息。
标签: c# winforms web-services