using System.Collections; using System.Linq; using System.Net; using System.Reflection; namespace NetDisk { public static class Extension { public static CookieCollection GetAllCookies(this CookieContainer container) { var allCookies = new CookieCollection(); var domainTableField = container.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static).FirstOrDefault(x => x.Name == "m_domainTable"); var domains = (IDictionary)domainTableField.GetValue(container); foreach (var val in domains.Values) { var type = val.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static).First(x => x.Name == "m_list"); var values = (IDictionary)type.GetValue(val); foreach (CookieCollection cookies in values.Values) { allCookies.Add(cookies); } } return allCookies; } } }