Ik wil een System.Diagnostics.Process aanbieden aan plugins, maar ik wil de controle beperken.
Dus heb ik een stuk van de interface van de Process klasse gecopy-paste in een interface
Natuurlijk leidt de Process klasse hier nog niet vanaf, dus
... en klaar was de kous.
Nu wil ik de static member GetProcessById(int) gebruiken. Via disassembly zie ik dat die een private constructor aanroept.
Is er een manier om alsnog die memberfunctie te kunnen gebruiken met mijn afgeleide klasse?
- Via reflection oproepen kan niet aangezien je niets kan doen met/voor de base() constructie (~ interne code)
- Casten en dergelijke kunnen ook niet aangezien de Process geen MyProcess is natuurlijk (~externe code)
ik zie er eigenlijk tegenop om een is-a relationship op te bouwen en dan te gaan wrappen voor elke member, zeker aangezien het niet enkel over de members gaat die ik wil aanbieden in de interface, maar ook aangezien ik de andere members wel zelf wil kunnen gebruiken.
Dus heb ik een stuk van de interface van de Process klasse gecopy-paste in een interface
C#:
1
2
3
4
| interface IMyProcess { // members die ik wil aanbieden } |
Natuurlijk leidt de Process klasse hier nog niet vanaf, dus
C#:
1
2
3
4
| class MyProcess : System.Diagnostics.Process, IMyProcess { internal MyProcess() {} } |
... en klaar was de kous.
Nu wil ik de static member GetProcessById(int) gebruiken. Via disassembly zie ik dat die een private constructor aanroept.
Is er een manier om alsnog die memberfunctie te kunnen gebruiken met mijn afgeleide klasse?
- Via reflection oproepen kan niet aangezien je niets kan doen met/voor de base() constructie (~ interne code)
- Casten en dergelijke kunnen ook niet aangezien de Process geen MyProcess is natuurlijk (~externe code)
ik zie er eigenlijk tegenop om een is-a relationship op te bouwen en dan te gaan wrappen voor elke member, zeker aangezien het niet enkel over de members gaat die ik wil aanbieden in de interface, maar ook aangezien ik de andere members wel zelf wil kunnen gebruiken.
[ Voor 7% gewijzigd door H!GHGuY op 27-11-2007 20:49 ]
ASSUME makes an ASS out of U and ME