C# 在构造函数中使用凭据而不传入它们
我有一个Windows窗体,要求用户输入用户名和密码C# 在构造函数中使用凭据而不传入它们,c#,C#,我有一个Windows窗体,要求用户输入用户名和密码 public partial class Login : Form { public bool LoginStatus { get; set; } public string UserName { get { return username.Text; } } public string PassWord { get { return password.Text; } } 我想将用户名和密码传递到另一个类的构造函
public partial class Login : Form
{
public bool LoginStatus { get; set; }
public string UserName { get { return username.Text; } }
public string PassWord { get { return password.Text; } }
我想将用户名
和密码
传递到另一个类的构造函数中
public ICredentials Creds { get; set; } // <-- Can I use this ??
private readonly ICredentials _credentials;
public Tools()
{
_credentials = Creds;
}
public ICredentials Creds{get;set;}/如果您不想提供值来构造对象,那么它们不应该是构造函数的一部分。依赖项注入容器可能能够为这些值提供一些创建动态扩展的工作,但现实情况是(根据您的描述),您需要创建一个无参数构造函数或大量重构代码。我同意@DavidHaney的观点,DI注入系统可以解决您的问题,尽管它需要一些重构
另一种方法是创建一个全局变量,将凭据存储在其中,然后从Tools类访问该全局变量。请注意,全局变量是“代码气味”,但有时需要
您可以使用线程存储,请参阅
或者,您可以在应用程序中声明一个静态变量。Creds
在构造函数调用时永远不会被设置。如果您想集中这种逻辑,DI容器将是最佳选择。