KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I think this question is best understood by an example so here we go: public class Base { // this method works fine public void MethodA(dynamic input) { // handle input } } public class Derived: Base { // Derived was named Super in my original post // This is also fine public void MethodB(dynamic input) { MethodA(input); } // This method does not compile and the compiler says: // The call to method 'MethodA' needs to be dynamically dispatched, // but cannot be because it is part of a base access expression. // Consider casting the dynamic arguments or eliminating the base access. public void MethodC(dynamic input) { base.MethodA(input); } } The compiler clearly states that method C is invalid due to the fact that it is using base access to call method A. But why is that? And how does one call the base method when overriding a method with dynamic parameters? E.g. what if I wanted to do: public class Base { // this method works fine public virtual void MethodA(dynamic input) { Console.WriteLine(input.say); } } public class Derived: Base { // Derived was named Super in my original post // this does not compile public override void MethodA(dynamic input) { //apply some filter on input base.MethodA(input); } }
Tags (comma-separated)
Save Edits
Cancel