我有一些表单,以及一个包含用户,信息和内容列表的类管理。我想要一个管理实例,我可以从所有表格访问。我怎么做? 提前完成。
答案 0 :(得分:1)
最好的方法(我的观点)是使用MVVM模式并让ViewModel继承自基类
答案 1 :(得分:1)
只是详细说明托马斯'回答。
<强>的Singleton 强>
单例基本上是一个类,它只允许程序保存一个实例。换句话说,无论您是在Superman
班级还是Batman
班级,Singleton班级,让我们称之为MyCar
都是一样的。< / p>
Singleton很容易实现和掌握。看一下本教程:http://www.usmaanz.com/singleton/以获得一个想法。
<强> MVVM 强>
MVVM模式非常强大!它允许您创建一个包含一定数量属性的对象,并允许您的案例中的许多视图或表单使用该模型。
让我们说一个表格有以下控件:
在这种形式中,我们希望保存传递给这些控件的数据。因此,以下课程将帮助我们掌握这些数据:
public class MyModel
{
public string Name {get;set;}
public string Password {get;set;}
public string Email {get;set;}
}
然后在您的表格中,您可以:
MyModel model = new MyModel(){Name = txtName.Text, Password = txtPassword.Text, Email = txtEmail.txt};
此对象现在将保存表单的数据。您也可以使用此类将数据保存在任何其他位置,您可以自由地创建任意数量的实例。
希望有所帮助!
答案 2 :(得分:1)
错误
错误3可访问性不一致:参数类型“ProjectClasses.Management”的方法不如方法'FinaleSystem.MenuForm.Start(ProjectClasses.Management)'
表示您的MenuForm
正在导出方法Start
(可能是public
),其类型ProjectClasses.Management
的参数不太容易访问。可能是internal
。将Management
课程声明为public
可以解决您的问题。如果该类嵌套在另一个类中,则将“父”类声明为public
。如果您不想上课public
,请改为使用方法Start
internal
。
public
表示可以从其他项目访问项目。 internal
表示该项目只能在同一个项目中访问。如果Start
为public
且参数类型为internal
或private
,则无法从其他项目调用该方法,因为您无法创建所请求类型的对象。您无法从中派生类,以便将其用作参数。
非嵌套类的默认访问修饰符为internal
。嵌套类的默认访问修饰符为private
。
有关详细信息,请参阅https://stackoverflow.com/a/3763638/880990
答案 3 :(得分:0)
一种可能的解决方案是使您的管理类属性static
。
干杯
答案 4 :(得分:0)
这个的简单情况是作为singleton实现的,其中一个且只有一个类的实例存在于程序的生命周期中。 Singleton有许多缺点,主要与测试难度和正确处理线程有关。解决此问题的下一步通常以service locator pattern实现,但这也被视为反模式。处理此问题的最佳方法称为dependency injection。虽然DI是“最佳方式”,但在您的方案中可能很难/过度杀戮。