我有一个名为“帐户”的课程。 这是我的代码:
// Account.cs
public partial class Account
{
private Account.Credential _credential = new Account.Credential();
public void Login(string UserID, string UserPW)
{
try
{
// do something
_credential.CookieCollection = browser.CookieCollection;
_credential.CookieContainer = browser.CookieContainer;
_credential.UserID = "test";
_credential.UserPW = "test";
}
catch (Exception err)
{
throw err;
}
}
}
// Credential.cs
public partial class Account
{
public class Credential
{
// Model
public CookieCollection CookieCollection { get; set; }
public CookieContainer CookieContainer { get; set; }
public string UserID { get; set; }
public string UserPW { get; set; }
}
}
// Form1.cs
public void ABC()
{
Account[] _account = new Account[2];
_account[0].Login("myID", "myPW");
Account.Credential _cred = _account[0].Credential; ---> I get an error.
}
但是当我写一个mothod调用数组中的Account类并调用Credential的子类时,它会给我一个错误。
'Credential':不能通过表达式引用类型;请尝试'Account.Credential'。
因为,Login方法在Account Class中,我应该创建一个Account类数组。不是凭证类。
有谁知道如何解决这个问题?
答案 0 :(得分:2)
由于错误试图告诉您,Credential
类型是Account
类型的一部分;不是任何单个Account
实例。
引用myAccounts[42].Credential
或mikesAccount.Credential
类型
如果您想获得该用户的凭证,则需要引用Account
类的字段或属性。
您可以写myAccounts[42]._credential
,但_credential
是私有的,这样会产生不同的错误
你应该建立一个公开的,可能是只读的财产。
答案 1 :(得分:0)
这种情况正在发生,因为Account.Credential
是Account
的内部类型,并且不会像您使用它一样使用。尝试做的代码与尝试
var str = String;
您需要初始化Account.Credential
。一个简单的方法是在Account的ctor或new
方法中使用Login()
。
我注意到您的代码会遇到更多问题 - 如果您想访问Account.Credential
内声明的Account
引用,则需要通过方法公开或更改访问修饰符。