When you return an string array from a call to HtmlDocument.InvokeScript it returns it with the type "Object". Below I propose a solution to convert the array to a List
First of all we will define a class that will help us. It exposes 2 methods: length and getValue. length return the number of elements in the array and getValue(index) returns the value at index "index".
function mgArray(array){
this.links = array;
this.length = function(){
return this.links.length;
};
this.getValue = function(index){
return this.links[index];
};
};
When we return an array "arrayName" we will use: return new mgArray(arrayName);
And below is the code that habdles the conversion in C#
private static ListmgArrayToStringList(object comObject) { Type comObjectType = comObject.GetType(); int count = (int)comObjectType.InvokeMember("length", BindingFlags.InvokeMethod, null, comObject, null); var result = new List (count); var indexArgs = new object[1]; for (int i = 0; i < count; i++) { indexArgs[0] = i; object valueAtIndex = comObjectType.InvokeMember("getValue", BindingFlags.InvokeMethod, null, comObject, indexArgs); result.Add(valueAtIndex.ToString()); } return result; }
The above code can be tweaked and used not only for List
No comments:
Post a Comment