【问题标题】:How to pass to a Generic and Pass from a Generic to another class?如何传递到泛型和从泛型传递到另一个类?
【发布时间】:2014-01-27 15:08:22
【问题描述】:

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

登录:

 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_eventclick_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();
    }
}

因此,能够做到这一点的最佳和最有效的方法是什么,如果可能的话,希望能提供示例。

【问题讨论】:

    标签: c# wpf xaml generics generic.xaml


    【解决方案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;
    

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

    【讨论】:

    • 感谢您的回答。从来没有想过这样做,现在我想起来了,我这样做的方式似乎很愚蠢。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2013-03-07
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多