Allows the overloading of a class's lookup operator.


Use Operator_Lookup to define a function that will be called if the called item cannot otherwise be found in the class.

Operator_Lookup overloads a class's lookup operator. The method's first parameter must be a String which will receive the name of the desired member. The method can have any combination of other parameters and can have any return type. The Operator_Lookup operator is called whenever you use the object.member syntax to look up a member of an object and the compiler can't find anything named "bar". Before it returns an Undefined Identifier error, the compiler will try to call a lookup operator and pass "bar" as the first parameter. Overloading works for the lookup operator just as it does for any other method.


If you implement Operator_Lookup on a class, you will no longer get compilation errors if you, for example, inadvertently misspell a property name. Instead, the Operator_Lookup method is called at runtime and is passed the name of your incorrectly spelled property.


This is not currently supported for Android.

Sample code

Gets values entered as dot notation from a Dictionary and returns the value:

' Gets values entered as dot notation from a dictionary
' MyClass.AnyName returns what is in
' ValueDict.Value("AnyName")

Function Operator_Lookup(name As String) As String
  If ValueDict.HasKey(name) Then
    Return ValueDict.Value(name)
    Return ""
  End If
End Function

This code defines "SquareLength" in the Vector class (see Operator Add), a class with two integer properties, x and y.

Function Operator_Lookup(Name As String) As Double
  If Name = "SquareLength" Then Return Self.x^2 + Self.y^2
End Function

When you write:

Var myDouble As Double
myDouble = myVector.SquareLength

it will return the result of the calculation. However, you can also write:

myDouble = myVector.UndefinedFunction ' does not exist


Desktop, console, web and iOS project types on all supported operating systems.