我有一个相当大的 CRUD WinForm 应用程序,其中包含许多对象。 人员、注册、计划、案例说明等。有超过 30 种形式组成了应用程序,UI 被逻辑地分解了。 成员、注册、计划、案例说明等。
在搜索表单上搜索后,我想弄清楚如何创建我的Person 对象,并将该对象传递给下一个对象要求的形式。不管是什么,让我们说人口统计。简而言之,我需要 Person 对象在整个 App 中可用,而且只能有一个。
现在我对设计模式的了解为零,但我正在尝试。我读过http://www.switchonthecode.com/tutorials/csharp-tutorial-singleton-pattern和 http://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/