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 であるサブクラスを呼び出すと、エラーが発生します。

「資格情報」: 式を介してタイプを参照することはできません。代わりに「Account.Credential」を試してください。

Login メソッドは Account クラスにあるため、Account クラスの配列を作成する必要があります。Credential クラスではありません。

これを修正する方法を知っている人はいますか?

4

2 に答える 2

2

エラーが伝えようとしているように、型はCredentialの一部です。単一のインスタンスではありません。Account Account

タイプmyAccounts[42].Credentialorを参照しても意味がありませんmikesAccount.Credential

そのユーザーの資格情報を取得する場合は、Accountクラスのフィールドまたはプロパティを参照する必要があります。
と書くことができますがmyAccounts[42]._credential、それ_credentialは非公開であるため、別のエラーが発生します。
おそらく読み取り専用の公開プロパティを作成する必要があります。

于 2013-08-26T02:37:17.250 に答える
0

これはAccount.Credential、内部型でAccountあり、使用方法のように使用されていないために発生しています。コードが何をしようとしているのかは、試行に似ています

var str = String;

を初期化する必要がありますAccount.Credential。簡単な方法newは、アカウントの ctor またはLogin()メソッド内で使用することです。

コードでさらに問題が発生することに気付きました。Account.Credential内部Accountで宣言された参照にアクセスする場合は、メソッドを介して公開するか、アクセス修飾子を変更する必要があります。

于 2013-08-26T02:52:49.383 に答える