Hi krisoye
Installing a custom
Nevertheless, it can be done with a bit of trickery. Here's a code sample that replaces the built-in
Clearly this is quite hacky and may not work in the future, but hopefully it can provide a quick fix.
Good luck!
Is there a way to override the toString() method on ClearScript objects? Perhaps via some sort of Prototype object? [...] Expected: Something other than undefined and ideally overridden to "function getElementsByClassName() { [native code] }"
Installing a custom
toString
method for host objects is quite simple. However, producing special output specifically for host methods is a bit tricky because the managed type that represents host methods is internal to ClearScript.Nevertheless, it can be done with a bit of trickery. Here's a code sample that replaces the built-in
toString
method for host objects with a function that produces the desired output for host methods:dynamic setup = engine.Evaluate(@" (function (obj, func) { obj.constructor.prototype.toString = function() { return func(this); } }).valueOf(); "); setup(newobject(), new Func<object, string>(obj => { var str = obj.ToString(); if (obj.GetType().FullName == "Microsoft.ClearScript.HostMethod") { return"function " + str.Substring(11) + "() { [native code] }"; } return str; }));
Good luck!