Fixes #15
The approach taken is to implement the required methods in a static class(SZArrayImpl) and when creating the virtual method table separately link them to the typed array class. At runtime in CallVirt it checks if a method in one of the generic interfaces is called and then converts the type of array from System.Array to T[] before searching for the method in the VMT. Currently all methods are always added but more intelligent queueing could be done in the future.
The implementation for Equals and IndexOf does not currently work but the necessary fix for CallVirt and ValueType should be part of the work for .Net 5.0
Fixes #15 The approach taken is to implement the required methods in a static class(SZArrayImpl) and when creating the virtual method table separately link them to the typed array class. At runtime in CallVirt it checks if a method in one of the generic interfaces is called and then converts the type of array from System.Array to T[] before searching for the method in the VMT. Currently all methods are always added but more intelligent queueing could be done in the future.
The implementation for Equals and IndexOf does not currently work but the necessary fix for CallVirt and ValueType should be part of the work for .Net 5.0