我正在为 Windows CE 5.0 设备编写一个应用程序,该应用程序在第一种表单中要求输入用户名
(当应用程序启动时),然后我得到来自数据库表的userId
。
之后出现一个接收 userId
的菜单表单,我必须将 userId
发送到菜单选项的每个构造函数,以便在这些表单中使用它。我认为一定有更好的方法来做这样的事情。
示例:
public partial class Menu : Form
{
int userId;
public Menu(int userId)
{
InitializeComponent();
this.userId = userId;
}
private void buttonDelivery_Click(object sender, EventArgs e)
{
Delivery delivery = new Delivery(userId);
delivery.Show();
this.Hide();
}
...
也许我应该使用这样的全局变量?
public static class UserConfiguration
{
public static int userId;
}
这不是不好的做法吗?
最后请记住,紧凑框架不支持 app.config 文件
最佳答案
就我个人而言,我会投票支持“两者都不是”,但会使用其他一些可用的架构工具。
我非常倾向于拥有一个包含所有用户信息的类(您正在使用的 ID,然后可能还有其他任何信息,例如姓名等)。我将创建一个实例并在提交第一个表单(登录)时填充该信息,并将其保存在 DI 容器中(我使用 this one specifically ,但任何 CF-supporting container 都可以)。
然后,我要么使用注入(inject)来自动将该实例推送到任何需要它的类中,要么让消费者根据需要将其从容器中拉出。我使用哪种机制取决于我使用的容器以及我需要信息的具体方式/时间。由于您需要的数据来自数据库,因此我实际上倾向于使用 ORM(我使用 this one )来提取数据,这将为您提供包含您的用户信息的实体实例无论如何,都会自动追随。
关于c# - 在紧凑的框架中以多种形式提供变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7024856/