Vinnaren i pepparkakshustävlingen!
2016-02-16, 19:32
  #1
Medlem
Har en uppgift där vi ska göra en observer pattern i en asp.net, det är väldigt enkelt. Ska ha en lista med personer som är intresserade av att låna en bok. När boken finns på lager så skickas en notifikation.

Mitt problem är att när jag trycker på knappen addUser så skapas en subscriber och läggs till i listan. Men den försvinner från listan så fort metoden tar slut. Varför blir det så? product är ju deklarerad utanför metoden.

Kod:
private ConcreteSubject product = new ConcreteSubject();

protected void addUser_Click(object sender, EventArgs e)
{
        product.Attach( new Subscriber( subscriberText.Text ));
}
protected void notifyBtn_Click(object sender, EventArgs e)
{
        product.Notify("Titel på bok");
}

Observer Pattern:
Citera
2016-02-16, 19:49
  #2
Medlem
John-Pauls avatar
Långskott då alla kod inte är med här, är det kanske så att ingenting längre håller i product?
Citera
2016-02-16, 20:00
  #3
Medlem
Jag antar att du har all impl. på en och samma sida (page). Det innebär att ASP.NET runtimen garbage collectar alla objekt vid Unload eventet i.e när sidan är renderad och skickad till klienten.


HTTP och webben är stateless. State hanteras t.ex. med sessioner på servern och cookies på klienten som identiferar vilken session som hör till vilken klient etc. I ASP.NET finns det många olika alternativ för state hantering.

https://msdn.microsoft.com/en-us/library/ms178472.aspx
https://msdn.microsoft.com/en-us/library/75x4ha6s.aspx
https://msdn.microsoft.com/en-us/library/ms178581.aspx

I ditt fall så kan du testa att flytta Observer/Book etc. till separata POCOs och göra dem static.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback