Writing Xbasic wrapper classes for .NET classes
Xbasic has a simple method for defining native wrapper classes for .NET classes that can help you avoid writing registration code every time you use a class. Simply create a class in your project and make the body of your class the desired registration code. Then save the class file as <Namespace>.<Class> and reference it in your code as <Namespace>::<Class>. Note that the class filename includes a dot, while the class reference includes two colons.
While you can use your own namespace and class names, it makes life a whole lot simpler for you and anyone else who uses your class definition if you match the .NET class hierarchy. Also, do not bother to create a class file for a preloaded class.
The following example should make the methodology clear.
Class file contents:
dim Sv as DotNet::Services dim assy as DotNet::AssemblyReference assy.filename = DotNetPath()+"System.Numerics.dll" Sv.RegisterClass("Numerics", "BigInteger", "System.Numerics.BigInteger", assy)
Save as Numerics.BigInteger to match the first two parameters of the RegisterClass method call. Then try this interactive session:
dim bi as Numerics::BigInteger a = new Numerics::BigInteger(987654) ? bi.Pow(a,5).ToString() = "939775534806134151589356093024"