In Ruby, objects have a handy method called method_missing which allows one to handle method calls for methods that have not even been (explicitly) defined:
method_missing
C# now has TryInvokeMember, for dynamic objects (inheriting from DynamicObject)