gpt4 book ai didi

c# - 在多个 lightswitch 屏幕中重复使用通用命令

转载 作者:行者123 更新时间:2023-11-30 17:06:26 25 4
gpt4 key购买 nike

我正在设计一个 LightSwitch 2012 应用程序来管理请求,我希望能够在所有屏幕上使用相同的可重用代码更新请求状态。例如,用户可以在批准屏幕、履行屏幕等中更改请求状态,这些都是通过按钮调用的。目前,我在每个需要更新请求的 .cs 文件中都有一个方法,使用 partial void <ScreenCommand>_Execute()方法。我正在尝试更改此设置,以便我可以从一个地方而不是所有地方更新代码,而且我也不想将方法复制到我添加了按钮的新屏幕。现在通常我会把它放在 Application.cs 或其他具有全局访问权限的地方,但我无法访问相同的 DataWorkspace目的。我还传入了 this.DataWorkspace屏幕上的对象,允许访问 SaveChanges()方法。然而,这似乎有点臭。有没有更好的方法来处理这个问题,或者有更好的地方来放置您希望能够分配给多个屏幕上的按钮的可重用命令?目前,我必须非常小心地保存脏数据,而且我仍然必须手动连接所有内容。如果代码在 Application.cs 文件中,我也不知道它是否在正确的上下文中运行。澄清一下,是的,我确实希望它在客户端运行,这样我就可以从他们的 outlook 收件箱等中触发电子邮件。

最佳答案

您要做的只是良好的编程实践,将多个位置所需的代码放在一个可以从每个位置调用的位置,但只在一个位置维护。这只是习惯您在 LightSwitch 中做事的方式的问题。

您可以在 Client< 的 UserCode 文件夹中的模块(或 C# 中的静态类)中添加代码/em> 项目。这是文件夹存在的部分原因,作为放置“用户代码”的地方。为此,请切换到文件 View ,然后右键单击UserCode 文件夹以添加您的模块/类。在新创建的模块/类中添加您的方法。您可以根据需要创建任意数量的这些方法(如果您喜欢保持代码分离),或者您可以将其他方法添加到同一模块/类,这取决于您。

但是,我不会将数据工作区作为参数传递给您创建的可重用方法。我什至不会传递实体对象,只是传递计算所需状态所需的值。但数据工作区的 SaveChanges 方法的实际调用应保留在屏幕代码中。将屏幕视为“工作单元”。

在每个按钮的 Execute 方法中(在您的各种屏幕中),您使用屏幕中正在操作的实体的值调用您的方法并返回结果。将计算出的返回值分配给实体的 State 属性(如果这是您拥有的),然后调用屏幕的 Save 方法(或使用屏幕的Close 方法,为 SaveChanges 参数传递 true)。无需调用数据工作区的 SaveChanges 方法,并且您通过这种方式以“LightSwitch 方式”进行操作。

这样做的另一个好处是,您的代码现在可以单元测试,因为它不再依赖于任何实体。

我希望这一切对您来说都有意义。

关于c# - 在多个 lightswitch 屏幕中重复使用通用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375905/

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