我有一个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; } }
我想将UserName
和PassWord
传递到另一个类的构造函数中。
public ICredentials Creds { get; set; } // <-- Can I use this ??
private readonly ICredentials _credentials;
public Tools()
{
_credentials = Creds;
}
经常使用Tools()
类,我想取UserName
和PassWord
并将它们放在构造函数中而不传入它们,因为那时我必须对它进行更改Tools()
类的所有实例。那可能吗?或者我是否必须将UserName
和PassWord
传递给构造函数?
答案 0 :(得分:2)
如果您不想提供构造对象的值,那么它们不应该是构造函数的一部分。依赖注入容器可能能够为这些值提供一些工作来创建动态扩展,但实际情况是(根据您的描述)您需要创建无参数构造函数或大量重构代码。
答案 1 :(得分:1)
我同意@DavidHaney DI注入系统可以解决您的问题,尽管它需要进行一些重构。
另一种方法是创建一个全局变量,将凭证存储在那里,然后从Tools类访问这个全局变量。请注意,全局变量是代码味道&#39;但有时需要。
您可以使用线程存储,请参阅http://msdn.microsoft.com/en-us/library/6sby1byh(v=vs.110).aspx
或者您可以在应用内声明一个静态变量。