Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med Collection av PresenationObject i en DDD lösning...

Postades av 2009-04-04 22:33:09 - Magnus Gladh, i forum arkitektur, Tråden har 5 Kommentarer och lästs av 7721 personer

Jag sitter på ett lite problem som jag inte kan hitta någon snygg lösning på, hoppas på lite hjälp här.

Jag har en DDD lösning där jag har en cache som håller en collection av mina DDD-object och i min WPF application så vilja jag ha en collection av mina PresentationObject.

Så i cachen så har jag en MyCollection<Order> medans mitt WPF formulär skall använda sig av MyCollection<PresenationOrder>. Jag låter min PresenationOrder ta ett Order object och iprincip bara wrappa detta och kollar om Order implementerar INotifyPropertyChanged och så fall lyssnar PresentationOrder på förändring på Order objectet och skickar dessa vidate till sitt eget NotifyPropertyChanged event.

Så det som fungerar är att jag får ut en lista av mina Orders (från cachen) som en lista med PresenationOrder och om jag ändrar på någon information i mina Orders object i cachen så syns detta direkt i ListView, så långt allt bra.

Mitt problem blir när jag plockar bort/lägger till ett object i min cached MyCollection<Order> som ligger i cachen. Eftersom jag har skapat en ny lista MyCollection<PresenationOrder> så kommer ju CollectionChangedEventet att castas från MyCollection<Order> medans det är MyCollection<PresenationOrder> som är bunden till min ListView kontroll. Vilket gör att inga förändringar syns i min ListView

Så det jag vill göra är att när MyCollection<Order> ändras så skall den notificera MyCollection<PresenationOrder> vad som har hänt, som i sin tur genomför dessa förändringar och sedan reser ett CollectionChanged event hos sig som ListView kan utföra.

En lösning som jag kan tänka mig löser detta på är om MyCollection<PresenationOrder> har en referens till MyCollection<Order> som ligger i cachen, och jag vet inte om jag vill ha denna hårda koppling här. En annan lösning vore att bygga någonsorts Publish/Subscribe metod som får hantera detta, här slipper jag den hårda bindingen men samtidigt blir det bra mycket mer komplext att fixa till.
År det någon som har en annan bättre ide, eller har testat något av det och kan rekomendera den ena metoden framför den andra.

- M


Svara

Sv: Problem med Collection av PresenationObject i en DDD lösning...

Postades av 2009-04-05 22:32:07 - Niklas Jansson

Det här är väl egentligen ett problem med det språk du använder. (C# gissar jag?)

Egentligen finns ju inga "events", utan det är en språkkonstruktion som implementerar Observer pattern. Problemet är att det du normalt sett har ett visst event, NotifyPropertyChanged, för enskilda objekt, men saknar samma event för samlingar av objekt. Det är en intressant diskussion i sig, men det leder direkt till funderingen om hur du har det för enskilda objekt; där wrappar du en Order i en PresentationOrder?

Men du tycker att en referens från MyCollection<PresentationOrder> till MyCollection<Order> är en för hård koppling?

Är inte wrappingen en jävligt hård koppling till att börja med?


Svara

Sv: Problem med Collection av PresenationObject i en DDD lösning...

Postades av 2009-04-06 07:37:34 - Peter Hageus

INotifyCollectionChanged finns ju alltid, blir samma koppling som Order/PresentationOrder.

Ska själv strax börja med samma problematik, funderar på att bara ha en tunn wrapper runt listan, istället för att ha kopia av datan.

Det är konstigt att det inte finns fler patterns och lösningar kring sånt här, är ju ett väldigt vanligt problem.


Svara

Sv:Problem med Collection av PresenationObject i en DDD lösning...

Postades av 2009-04-06 07:38:37 - Magnus Gladh

"för enskilda objekt, men saknar samma event för samlingar av objekt."

Nej då det finns event för förändringar av listan och de är dessa som jag vill att min "nya" lista skall "upptäcka" och göra förändringar med hjälp av.

"Men du tycker att en referens från MyCollection<PresentationOrder> till MyCollection<Order> är en för hård koppling?

Är inte wrappingen en jävligt hård koppling till att börja med?"

Jo det är det, och jag misstänker att för att få det att fungera på någolunda enkelt sätt så behöver jag en referens i min MyCollection<PresentationOrder> till MyCollection<Order>.

- M


Svara

Sv: Problem med Collection av PresenationObject i en DDD lösning...

Postades av 2009-04-07 14:02:59 - Magnus Gladh

Efter en del funderande och testande så tror jag jag har hittat en lösning som får duga...

Jag plockar bort min hårda koppling mellan Order och PresenationOrder också som en liten bonus. Det hela går ut på att jag använder mig av en EventBroker som kopplar ihop Order PropertyChangedEventetn med en metod i PresenationOrder, så när min Order reser ett PropertyChanged event så kommer den information skickas till den PresentationOrder som jag skapat för detta Order.

Samma sak blir för Collection<PresenationOrder> som kommer lyssna på CollectionChanged eventet från Collection<Order>.

Kräver att jag fixar lite basklasser till dels mina Presentationobject och domänobjekt men det lär man ju ha ändå. Dels så fick jag skriva en EventBroker själv så jag slapp ifrån att använda Attribute i koden och löser det nu i coden dynamiskt och kan dessutom styra att property namn på Order endast uppdaterar Propertyn namn på PresentationOrder och inte någon annat objekt med property Namn.

Blir en hel del testande av EventBrokern innan den blir färdig. Men jag tror det blir en snygg och löskopplad lösning.

- M


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
502
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies