Aan de slag met C# 2.0 (ziet er veel belovend uit!), maar ik kom een probleem tegen met Generics.
Ik heb een generieke collectie:
Dit resulteert in de foutmelding:
Immers erft Receipt over van DomainObject dus lijkt mij het logisch dat je DomainObjectCollection<Receipt> impliciet kan casten naar DomainObjectCollection<DomainObject>. Zeker omdat er ook nog 'where T : DomainObject' staat in die collectie.
Expliciet casten vind ik niet zo'n oplossing omdat dan de elegantie verloren gaat, of is dat in mijn geval wel nodig?
Ik heb een generieke collectie:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public DomainObjectCollection<T> : List<T> where T : DomainObject { ... } //een domein object public Person : DomainObject { public DomainObjectCollection<Receipt> Receipts {...} } //en en klasse met een methode die er mee werkt: public PersonMapper { //methode public void CreateRelation(DomainObject obj, DomainObjectCollection<DomainObject>) {...} public void Create(Person obj) { CreateRelation(obj, obj.Receipts); } } |
Dit resulteert in de foutmelding:
Maar dat is toch vaagCannot convert from DomainObjectCollection<Receipt> to DomainObjectCollection<DomainObject>
Immers erft Receipt over van DomainObject dus lijkt mij het logisch dat je DomainObjectCollection<Receipt> impliciet kan casten naar DomainObjectCollection<DomainObject>. Zeker omdat er ook nog 'where T : DomainObject' staat in die collectie.
Expliciet casten vind ik niet zo'n oplossing omdat dan de elegantie verloren gaat, of is dat in mijn geval wel nodig?
Panacea.NL als je geinteresserd bent in IT en Geneeskunde!