Heb de afgelopen dagen gebruikt om mezelf wat in C# te verdiepen, maar ik loop nu tegen een "probleempje" aan waar ik zo snel geen elegante oplossing voor kan vinden. Ik probeer covariance toe te passen op properties, maar krijg dit nog niet voor elkaar. Ik heb voorbeelden gevonden van covariance d.m.v. delegates, maar dit biedt alleen een oplossing voor methods. Ik heb het nu met member hiding opgelost, maar ik vraag me af of er een elegantere oplossing is.
Omdat code meer zegt dan duizend woorden, een voorbeeld:
Wat ik dus voor elkaar probeer te krijgen, is dat sub classes van een super class, ook alleen sub classes van hun properties accepteren. Zoals in dit geval een SUV die alleen Diesel als Fuel accepteert. Is er iemand die hier wellicht een betere oplossing voor heeft?
Omdat code meer zegt dan duizend woorden, een voorbeeld:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| class Car { private Fuel fuel; public Fuel Fuel { get { return fuel; } set { fuel = value; } } } class Fuel { } class SUV : Car { new public Diesel Fuel { get { return base.Fuel as Diesel; } set { base.Fuel = value; } } } class Diesel : Fuel { } |
Wat ik dus voor elkaar probeer te krijgen, is dat sub classes van een super class, ook alleen sub classes van hun properties accepteren. Zoals in dit geval een SUV die alleen Diesel als Fuel accepteert. Is er iemand die hier wellicht een betere oplossing voor heeft?