Witam,
napisałem sobie klasę do zarządzania tymczasowymi emailami. Wygląda to tak:
class Email {
public CookieContainer Cookie = new CookieContainer();
public RestClient Client = new RestClient("https://temp-mail.org");
public string Address { get; private set; }
public Email() {
this.Client.CookieContainer = this.Cookie;
}
public void SetRandomAddress() {
this.Cookie = new CookieContainer();
this.Address = this.GetRandomAddress();
}
public string GetRandomAddress() {
try {
//wyślij GET i wydobądz email z źródła strony
} catch {
return "";
}
}
}
Jest to tylko część kodu, ale mam nadzieję, ze wiecie o co chodzi. Problem w tym, że jak użyję takiego kodu:
Email tempEmail = new Email();
for (int i=0; i<5; i++) {
tempEmail.SetRandomAddress();
Console.WriteLine(tempEmail.Address);
}
okazuje się, że w konsoli mam 5x ten sam adres email. Rozwiązanie polega na edycji tego kodu:
public void SetRandomAddress() {
this.Cookie = new CookieContainer();
this.Client.CookieContainer = this.Cookie;
this.Address = this.GetRandomAddress();
}
No i właśnie nie do końca rozumiem dlaczego muszę dodać tą środkową linijkę. Przecież w konstruktorze zdecydowałem, że CookieContainer
obiektu Client
ma wskazywać na obiekt Cookie
mojego emaila. Dlaczego więc muszę robić to jeszcze raz?