0

我有一个名为“帐户”的课程。这是我的代码:

// 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.
}

但是当我编写一个方法调用数组中的 Account 类并调用 Credential 的子类时,它给了我一个错误。

'Credential':不能通过表达式引用类型;请尝试使用“Account.Credential”。

因为,Login 方法在 Account 类中,所以我应该创建一个 Account 类的数组。不是凭证类。

有谁知道如何解决这一问题?

4

2 回答 2

2

正如错误试图告诉你的那样,Credential类型是类型的Account 一部分;不是任何一个Account实例。

引用类型myAccounts[42].Credential或是没有意义的mikesAccount.Credential

如果要获取该用户的凭据,则需要引用Account该类的字段或属性。
你可以写myAccounts[42]._credential,除了那_credential是私有的,这样会给出一个不同的错误。
您应该创建一个公共的、可能是只读的属性。

于 2013-08-26T02:37:17.250 回答
0

发生这种情况是因为Account.Credential它是一种内部类型,Account并且不像您使用它的方式那样使用。尝试执行的代码类似于尝试

var str = String;

您需要初始化一个Account.Credential. 一个简单的方法是new在 Account 的 ctor 或Login()方法中使用。

我注意到您的代码会遇到更多问题 - 如果您想访问Account.Credential内部声明的引用Account,您需要通过方法公开它或更改访问修饰符。

于 2013-08-26T02:52:49.383 回答