This project is read-only.

Class properties shadowing

Nov 5, 2016 at 10:00 PM
Edited Nov 5, 2016 at 10:05 PM

I have an issue using shadowed properties on VB.NET using JS library.

When i tried to create a Node class that is similar to web standard's one, i issued with innerHTML property.

Usually it is used either as a standalone property or a function property.

The problem is that library does not accept ByRef and Optional parameters for API functions, so i decided to use SHadowing for class methods and it worked well, but i also tried to create similar functionality for class properties with no success.

For example:
        Public Shadows Function insertAfter(ByVal new_child As Node, ByVal ref_child As Node) As Node
            Return Me.nodelist.nodes(Me.node.InsertAfter(new_child.node, ref_child.node))
        End Function

        Public Shadows Function insertAfter(ByVal new_child As Node) As Node
            Return Me.nodelist.nodes(Me.node.InsertAfter(new_child.node, Me.node.FirstChild))
        End Function
^^ This one worked well for me, but when i tried to do the same with properties:
        Public Shadows ReadOnly Property innerHTML(ByVal html As String) As String
                Me.node.InnerHtml = html
                Return Me.node.InnerHtml
            End Get
        End Property

        Public Shadows Property innerHTML As String
                Return Me.node.InnerHtml
            End Get
            Set(value As String)
                Me.node.InnerHtml = value
            End Set
        End Property
it thrown an AmbiguousMatchException error at:
System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
   in System.Type.GetProperty(String name)
   in Noesis.Javascript.JavascriptExternal.GetProperty(JavascriptExternal* , basic_string<wchar_t\,std::char_traits<wchar_t>\,std::allocator<wchar_t> >* iName, Handle<v8::Value>* result)
   in Noesis.Javascript.JavascriptInterop.Getter(Handle<v8::Value>* , Local<v8::String> iName, AccessorInfo* iInfo)
   in v8.Script.Run(Script* , Local<v8::Value>* )
   in Noesis.Javascript.JavascriptContext.Run(String iSourceCode)
Neither shadowing nor overloading of properties didn't work with JavaScript API in any way. Please advise.