This all works as expected but I noticed that the Execute method is marked internal. My understanding of the internal keyword is that all classes or members marked internal are only available to the containing assembly.
How is it that Execute is available to my code?
[Took a quick check at my code and reflector to double check my post and found something new]
I don't actually have access to call the execute method in my derived class. This seems very interesting. So since the method is marked protected virtual, I'm allowed to override it ignoring the internal scope, but can't actually call it. Does this seem odd
to anyone else? So how would I create a method that is overridable only to classes in my assembly, drop the protected modifier?