我有一个FTPClient类封装了N多FtpWebRequest操作,例如Upload、Download等等。
public class FTPClient
{
    private string m_url;
    private string m_userName;
    private string m_password;
    ...    public FTPClient(string url, string userName, string password)
    {
        string m_url=url;
        ...
    }    public void Upload(string filePath)
    {
        FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(m_url));
        reqFTP.Credentails = New NetworkCredential(m_userName, m_password);
        ...
    }
}
因为最近一个500错误的Bug,我必须避免每次都给FtpWebRequest的Credentails属性赋一个新的NetworkCredential。我就在这个类的内部驻留一个字典:
public class FTPClient
{
    private string m_url;
    private string m_userName;
    private string m_password;
    private static Dictionary<string, NetworkCredential> s_credentialDict = new Dictionary<string, NetworkCredential>();
    ...    public FTPClient(string url, string userName, string password)
    {
        string m_url=url;
        m_credentialKey = FtpUserID + FtpPassword;
        if (!s_credentialDict.ContainsKey(m_credentialKey)) 
        {
            s_credentialDict.Add(m_credentialKey, new NetworkCredential(FtpUserID, FtpPassword));
        }
        ...
    }    public void Upload(string filePath)
    {
        FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(m_url));
        reqFTP.Credentails = s_credentialDict[m_credentialKey];
        ...
    }
}
刚刚在查资料的时候发现了CredentialCache这个类,不知道我这个地方是不是可以用它,怎么用?有什么好处?