0

当我登录到我的应用程序时,我将cUserEntity包含登录用户的所有详细信息(包括用户 ID 和用户名)的类传递给仪表板表单。从这里开始,我可以继续将细节从课堂传递到课堂,从形式传递到形式。例如(忽略此示例中的通用位)

登录:

 xamlDashboard Manager = new xamlDashboard(_loggedInUser);
 Generic Gen = new Generic(_loggedInUser);
 Manager.Show();

仪表盘:

cUserEntity _loggedInUser;

  public xamlDashboard(cUserEntity loggedInUser)
    {

        InitializeComponent();

        _loggedInUser = loggedInUser;
    }

但是,我有一个Generic.Xaml页面,它在每个窗口的顶部创建一个按钮。后面Generic.xaml是一个 Generic 类,它保存click_event了创建的按钮。click_event打开另一个窗体的新窗口。

现在,我需要另一个表单来获取登录的用户详细信息,为此,我假设我需要传递给Generic.Xaml,然后通过click_event. 但是,正如我阅读并注意到的那样,这似乎是不可能的,因为您不能在运行时将类型传递给 Generic。

我希望实现的目标(失败了)

public partial class Generic
{
    cUserEntity _loggedInUser;

    public Generic(cUserEntity loggedInUser)
    {
        _loggedInUser = loggedInUser;
    }

    private void btnHelp_Click(object sender, RoutedEventArgs e)
    {
        xamlHelp help = new xamlHelp(_loggedInUser);
        help.Show();
    }
}

因此,能够做到这一点的最佳和最有效的方法是什么,如果可能的话,将不胜感激。

4

1 回答 1

1

创建一个单例对象来存储您的登录用户会简单得多......

public class UserAccount
{
   private static User _currentUser;

   private UserAccount() {}

   public static User CurrentUser
   {
      set
      {
         _currentUser = value;
      }

      get 
      {
         return _currentUser;
      }
   }
}

然后登录后你会这样做......

// Set the current User
UserAccount.CurrentUser = user;

然后在任何课程中,您都需要当前登录的用户...您可以这样做...

var user = UserAccount.CurrentUser;

显然,您需要围绕这个实现自己的业务规则,但这个概念是我在这里试图传达的,一个可以从任何地方访问的静态单个用户实例。

于 2014-01-27T15:28:13.233 回答