gpt4 book ai didi

带有可选 GUI 的 C# 类?

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:41 28 4
gpt4 key购买 nike

我正在寻找一种方法来拥有一个 C# 类,主要是在没有任何 GUI 的情况下作为 Windows 服务的一部分运行,以选择性地显示在 WPF Canvas 控件上。

我最初的想法是让对象扩展一个 WPF 控件,但是这需要服务器端(Windows 服务)引用这些库,这并不理想。我的第二个想法是实现工厂模式,包装器借此为对象生成 GUI,但如果需要,我希望对象能够定义它自己的设计(理想情况下带有代码隐藏的 XAML)。

这些类通过 MEF 从插件目录加载,并基于基于 XML 的设置文件进行实例化。

我也想到了只使用两个单独的类的可能性,但这似乎增加了插件制作过程的复杂性和冗余(可能会有几个)。

想法?

编辑:这些类可以被认为是 Windows Workflow Foundation 事件。它们通过 GUI 配置并在服务器上运行。

最佳答案

将类本身的“业务逻辑”与其任何 GUI 分开。 GUI 应该只是业务逻辑之上的一个 View (可能带有交互)。

举个例子,我最近做了一个关于“Skeetris”的演讲——一个对某些人来说可能看起来很熟悉的方 block 掉落游戏。我在解决方案中有几个项目:

其他所有内容都引用的两个项目:

  • Skeetris.Common(位实际上并不特定于 Skeetris - 它们通常会进入通用命名空间中的实用程序库)
  • Skeetris.Model(所有实际行为 - 下降和旋转形状等)

客户项目:

  • Skeetris.Text(主机版)
  • Skeetris.Wpf
  • Skeetris.WindowsStore
  • Skeetris.Email
  • Skeetris.Twitter

和测试项目:

  • Skeetris.Model.Test(模型测试)
  • Skeetris.Model.Testing(一个可以内部访问 Skeetris.Model 的项目,旨在更轻松地测试模型和使用该模型的任何代码)

如您所见,这里有各种各样的客户 - 但他们都不是真正“理解”Skeetris;只有模型项目可以。 UI 层尽可能薄,将更多逻辑放入更容易测试的模型类中。

这种设置听起来也非常适合您的项目:

  • “核心”业务逻辑项目
  • Windows 服务适配器项目(带有响应服务事件的代码)
  • 一个 WPF 项目
  • 当然是测试项目:)

关于带有可选 GUI 的 C# 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21268915/

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