Eigenlijk twee vraagjes, maar ook al zijn ze verschillend, ze zijn niet zó verschillend dat het me nodig leek 2 verschillende topics te starten.
1. Waarom is het niet mogelijk om een dubbele extend te realiseren in C#? Ik snap dat het normaal gesproken niet geheel wenselijk ontwerp technisch, maar soms lijkt het me toch handig?
Ik heb bijvoorbeeld een aantal classes die allemaal een dezelfde functie hebben, zoals bijvoorbeeld pagina-objecten die op een staan: rectangle, image en textbox. Deze wil ik uitbreiden met eigen functionaliteit, en is het dus makkelijk om de standaard .net objecten te extenden, zodat ik ze kan uitbreiden en toch kan overriden en protected opties kan benaderen.
Maar ik wil ook dat ze allemaal dezelfde eigen functionaliteit delen waarbij ik ze dus ook van mijn eigen abstract class krijgen, en ik virtuals, overridess etc van mijn eigen class kan gebruiken.
Nu kun je een heel eind komen met interfaces e.d. maar dat is toch niet helemaal zo krachtig? of maak ik toch een denkfout?
2. Een parent child relatie opzetten is in principe geen probleem, echter kwam ik toch iets tegen (zoals sommige objecten in standaard .net framework) wat ik niet helemaal zelf geimplementeerd krijg en dat is de volgende pseudo code:
Wat ik dus niet snap is hoe parent object het voor elkaar heeft gekregen om van het child object de parent heeft kunnen zetten, aangezien de Parent property van het childObject readonly is! Op zich wil ik hetzelfde ongeveer kunnen bereiken maar ik kan dit niet zo 'schoon' voor elkaar krijgen, waarbij niet zomaar alles de parent kan zetten en veranderen wat er zou gebeuren als je Parent ook een 'set' mee zou geven, of de parent b.v. mee zou geven bij de constructor van het childobject
1. Waarom is het niet mogelijk om een dubbele extend te realiseren in C#? Ik snap dat het normaal gesproken niet geheel wenselijk ontwerp technisch, maar soms lijkt het me toch handig?
Ik heb bijvoorbeeld een aantal classes die allemaal een dezelfde functie hebben, zoals bijvoorbeeld pagina-objecten die op een staan: rectangle, image en textbox. Deze wil ik uitbreiden met eigen functionaliteit, en is het dus makkelijk om de standaard .net objecten te extenden, zodat ik ze kan uitbreiden en toch kan overriden en protected opties kan benaderen.
Maar ik wil ook dat ze allemaal dezelfde eigen functionaliteit delen waarbij ik ze dus ook van mijn eigen abstract class krijgen, en ik virtuals, overridess etc van mijn eigen class kan gebruiken.
Nu kun je een heel eind komen met interfaces e.d. maar dat is toch niet helemaal zo krachtig? of maak ik toch een denkfout?
2. Een parent child relatie opzetten is in principe geen probleem, echter kwam ik toch iets tegen (zoals sommige objecten in standaard .net framework) wat ik niet helemaal zelf geimplementeerd krijg en dat is de volgende pseudo code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class ParentObject { private Collection _childCollection; public Collection ChildCollection { get { return _childCollection; } } } class ChildObject { private object _parent; public object Parent { get { return _parent; } } } void Main() { ParentObject parentObj = new ParentObject(); ChildObject childObj = new ChildObject(); parentObj.ChildCollection.Add(childObj); /* Nu is childObj.Parent == parentObj ! */ } |
Wat ik dus niet snap is hoe parent object het voor elkaar heeft gekregen om van het child object de parent heeft kunnen zetten, aangezien de Parent property van het childObject readonly is! Op zich wil ik hetzelfde ongeveer kunnen bereiken maar ik kan dit niet zo 'schoon' voor elkaar krijgen, waarbij niet zomaar alles de parent kan zetten en veranderen wat er zou gebeuren als je Parent ook een 'set' mee zou geven, of de parent b.v. mee zou geven bij de constructor van het childobject