I’m writing an attribute where I want to access a method on the class that the controller that has the attribute on one of its actions derives from. That’s quite a mouthful, so let me explain:
- My controller derives from a class that has a method with the following signature:
protected bool IsSearchEngine()(the base class itself derives fromController) - One of the actions on my controller has an attribute
- The attribute derives from
ActionFilterAttributeand overloadsOnResultExecuting. - The
OnResultExecutingmethod has aResultExecutingContextparameter.
How can I access IsSearchEngine() through the ResultExecutingContext?
UPDATE: So far, I’ve gotten the compiler and Intellisense to accept this:
(filterContext.Controller as MyAssembly.Controllers.BaseControllerClass).IsSearchEngine()
Is that the right way to do this? I haven’t tested it yet.
By casting the
resultExecutingContext.ControllertoBaseControlleryou can access through all Property and Methods of your base controller, but the protection level of your MethodIsSearchEngine()you cannot access it. If you declared yourIsSerchEngine()bypublicyou can just call it as((BaseController)resultExecutingContext.Controller).IsSearchEngine()