c# – MonoState,Singleton或Derived Forms:CRUD应用程序的最佳方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – MonoState,Singleton或Derived Forms:CRUD应用程序的最佳方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2939字,纯文字阅读大概需要5分钟。
内容图文
![c# – MonoState,Singleton或Derived Forms:CRUD应用程序的最佳方法?](/upload/InfoBanner/zyjiaocheng/797/4209be7981e74aa69e682c65bff6cbaf.jpg)
我有一个相当大的CRUD WinForm应用程序,有很多对象.人员,注册,计划,案例注释等.有超过30个表单构成了应用程序,UI在逻辑上被细分.会员,报名,计划,CaseNotes等
我试图弄清楚如何在搜索表单上搜索并将对象传递给下一个请求的表单后创建我的Person对象.不管是什么,让我们说人口统计学.缺点是我需要Person对象在整个App中可用,并且只能有一个.
现在我有ZERO接触设计模式,但我正在尝试.我已阅读http://www.switchonthecode.com/tutorials/csharp-tutorial-singleton-pattern和http://www.yoda.arachsys.com/csharp/singleton.html,但我想确保我正确理解如何将此应用于我的情况.
首先,示例说明您正在访问引用,对吗?我错了还是需要访问该值?
其次,还有什么我需要做的才能使全球可用吗?我只是在每个表单上声明一个实例,但通过这个Singleton模式,以便没有多于一个?
谢谢
编辑1
为了澄清,所有对象都是Person的子对象.此外,正如搜索页面所躲避的那样;用户可以选择不同的currentPerson.但他们一次只能与一个人互动.
最后,正如我所说,我在这方面是一个婴儿,如果我应该考虑其他事情,请说明一个不同的方法,如果你愿意提供一些解释,为什么,我会非常感激.
编辑2
基于Medicine Man的评论,我认为我已经澄清了.
首先,感谢迄今为止贡献的所有人.
其次,我不知道关于设计模式的第一件事,如果在我目前的情况下需要某个模型,我肯定没有最模糊的.
如果有人有一个更好,更简单,或者,在您看来,更合适的方法将数据对象从FORM传递到FORM到FORM然后请告诉.
最后,我只需要一种跟踪信息的方法,因为我的用户从一个地方到另一个地方.
谢谢
解决方法:
您可以使用Singleton模式来确保只创建一个实例.
但是,the jury is still out(至少在我看来)是否这是一个好的决定. SO和其他地方有关于此的大量阅读.
我会从不同的角度来看待这个问题.我将所有表单都放在构造函数中的Person实例中.这样,每个表单只会担心它的Person实例.
您可以通过创建一个继承自Form的新类来实现此目的,并为您的Person提供字段/属性/构造函数.然后,任何使用Person的表单都可以从您的新类继承.
当然,您必须管理Person对象的创建.你甚至可以用单身人士来做这件事.但是,好处是每个表单不必知道如何创建Person或创建Person的人.这样,如果您选择move away from the Singleton pattern,则不必更改对单例实例的所有引用.
编辑:
这里有一些代码来演示这一点.我花了一段时间才让设计师玩得很开心.我必须在PersonForm中添加一个空的私有构造函数,以使设计者不会抛出错误.
Program.cs中
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyDerivedForm(new Person { Name = "Hello World!" }));
}
}
Person.cs
public class Person
{
public virtual string Name { get; set; }
}
PersonForm.cs
using System;
using System.Windows.Forms;
public class PersonForm : Form
{
private readonly Person myPerson;
protected virtual Person MyPerson
{
get
{
return this.myPerson;
}
}
private PersonForm()
{
}
public PersonForm(Person person)
{
this.myPerson = person;
}
}
MyDerivedForm.cs(添加名为label1的标签)
public partial class MyDerivedForm : SingletonMadness.PersonForm
{
public MyDerivedForm(Person person)
: base(person)
{
InitializeComponent();
}
private void MyDerivedForm_Load(object sender, EventArgs e)
{
label1.Text = this.MyPerson.Name;
}
}
内容总结
以上是互联网集市为您收集整理的c# – MonoState,Singleton或Derived Forms:CRUD应用程序的最佳方法?全部内容,希望文章能够帮你解决c# – MonoState,Singleton或Derived Forms:CRUD应用程序的最佳方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。