c# - MonoState、Singleton 或派生形式 : Best approach for CRUD app?

标签 c# .net winforms design-patterns singleton

我有一个相当大的 CRUD WinForm 应用程序,其中包含许多对象。 人员、注册、计划、案例说明等。有超过 30 种形式组成了应用程序,UI 被逻辑地分解了。 成员、注册、计划、案例说明等

搜索表单上搜索后,我想弄清楚如何创建我的Person 对象,并将该对象传递给下一个对象要求的形式。不管是什么,让我们说人口统计。简而言之,我需要 Person 对象在整个 App 中可用,而且只能有一个。

现在我对设计模式的了解为零,但我正在尝试。我读过http://www.switchonthecode.com/tutorials/csharp-tutorial-singleton-patternhttp://www.yoda.arachsys.com/csharp/singleton.html但我想确保我正确理解如何将其应用于我的情况。

首先,示例说明您正在访问一个引用,对吗?我是不是弄错了,或者我是否需要访问该

其次,我还需要做些什么才能使它在全局范围内可用吗?我是否只是通过这种单例模式在每个表单上声明一个实例,以便不超过一个?

谢谢

编辑 1

澄清一下,所有对象都是 Person 的子对象。此外,正如搜索页面所规避的那样;用户可以选择不同的 currentPerson。但他们一次只能与 ONE 人互动。

最后,正如我所说的,我在这方面还很幼稚,如果我应该考虑其他事情,请说出不同的方法,如果您愿意解释一下原因,我会非常感谢。

编辑2

根据 Medicine Man 的评论,我想我应该澄清一下。

首先,感谢迄今为止做出贡献的所有人。 其次,我对设计模式一无所知,如果在我目前的情况下需要某种模式,我当然不会最迷糊。

如果有人有更好、更简单或在您看来更合适的方法将数据对象从 FORM 传递到 FORM 到 FORM,请告诉我。

最后,我只需要一种方法来跟踪我的用户从一个地方到另一个地方的信息。 谢谢你


最佳答案

First, the examples state that you are accessing a reference, correct? Am I mistaken or would I need to access the value?

您正在访问的类是对内存中单个类的引用。例如,假设您的类(class)是:

public class Person { ... }

如果你有一个单例,你将在内存中保存一个“人”,并共享对单例中那个人的引用。当您访问您的单例时,您将使用该引用,这可能是您想要的。对人的任何改变都会改变它。

Second, is there anything else that I need to do to make this Globally available? Do I just declare a instance on each form but through this Singleton Pattern so as to not have more then one?

单例用于基本上强制每次使用该对象时,它都是同一个对象(每次使用都是对内存中一个单一对象的单独引用)。您可以在任何需要的地方获取单例,它就会正常工作。

关于c# - MonoState、Singleton 或派生形式 : Best approach for CRUD app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/825617/

相关文章:

c# - 丢弃和不分配变量有什么区别?

c# - {System.Net.Sockets.SocketException(10054): An existing connection was forcibly closed by the remote host.} C#

c# - 以编程方式添加一个上下文菜单,其 Click 处理程序知道哪个项目被右键单击

C# Winforms 线程 - 延迟子表单事件直到表单关闭

c# - 如果我正在实现 IEquatable<T>,那么覆盖 Equals 是否重要?

c# - 确保只获取属于用户的行

c# - 我转换为 Short 的二进制数据有效吗?

c# - 队列中未处理的项目修改数据库状态 - 如何处理并发数据请求?

c# - WinForms 相当于 WPF 的 IsHitTestVisible

c# - 如何找到元素在 Web 浏览器控件中的位置?