Ik ben een (hele simpele) datamapper aan het in elkaar knutselen om mn asp.net / c# wat bij te vijzelen, nou loop ik echter tegen wat issues aan met interface implementation.
Ik heb een IMapper interface:
En een AbstractMapper class als volgt:
AbstractDomainObject class:
Als ik de zaak probeer te compileren zegt ie nu dat ik de methodes update, insert en delete van
IMapper niet implementeer. Maar dat doe ik toch wel, want ik geef aan dat het generieke object T een afgeleide is van AbstractDomainObject?
Ik heb een IMapper interface:
C#:
1
2
3
4
5
6
| public interface IMapper { void update(AbstractDomainObject obj); void insert(AbstractDomainObject obj); void delete(AbstractDomainObject obj); } |
En een AbstractMapper class als volgt:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public abstract class AbstractMapper<T> : IMapper where T : AbstractDomainObject { public void update(T obj) { // update obj } public void insert(T obj) { // insert obj } public void delete(T obj) { // delete obj } } |
AbstractDomainObject class:
C#:
1
2
3
4
| public abstract class AbstractDomainObject : ICloneable { // implementatie van ICloneable en wat basic object state management shizzle } |
Als ik de zaak probeer te compileren zegt ie nu dat ik de methodes update, insert en delete van
IMapper niet implementeer. Maar dat doe ik toch wel, want ik geef aan dat het generieke object T een afgeleide is van AbstractDomainObject?