Call .NET Generic Methods
A generic method declares one or more parameterized types. For
more information, search for the term generics in the documentation
for a .NET class library, as described in To Learn More About .NET.
Use the NET.invokeGenericMethod function to
call a generic method. How you use the NET.invokeGenericMethod
depends if the method is static or if it is a member of a generic class.
Using the NetDocGeneric Example
The C# example NetDocGeneric.cs, in the
matlabroot/extern/examples/NET/NetSample
folder, defines simple generic methods to illustrate the
NET.invokeGenericMethod syntax. To see the code, open the file in MATLAB® Editor. Build the NetDocGeneric assembly as
described in Build a .NET Application for MATLAB Examples.
If you created the assembly NetDocGeneric and put it in your
c:\work folder, type the following MATLAB commands to load the assembly:
dllPath = fullfile('c:','work','NetDocGeneric.dll'); NET.addAssembly(dllPath);
Note
The methods and methodsview
functions do not list generic methods. Use the Display .NET Generic Methods Using Reflection example.
Invoke Generic Class Member Function
The GenMethod method in
NetDocGeneric.SampleClass returns the input argument as type
K. To call GenMethod, create an object,
cls:
cls = NetDocGeneric.SampleClass();
To convert 5 to an integer parameter type, such as
System.Int32, call
NET.invokeGenericMethod with the object:
ret = NET.invokeGenericMethod(cls,... 'GenMethod',... {'System.Int32'},... 5);
The GenMethodWithMixedArgs method has parameterized typed
arguments, arg1 and arg2, and a strongly typed
argument, tf, of type bool. The
tf flag controls which argument
GenMethodWithMixedArgs returns. To return
arg1, use the syntax:
ret = NET.invokeGenericMethod(cls,'GenMethodWithMixedArgs',... {'System.Double'},5,6,true);
To return arg2, use the syntax:
ret = NET.invokeGenericMethod(cls,'GenMethodWithMixedArgs',... {'System.Double'},5,6,false);
Invoke Static Generic Functions
To invoke static method GenStaticMethod, call
NET.invokeGenericMethod with the fully qualified class
name:
ret = NET.invokeGenericMethod('NetDocGeneric.SampleClass',... 'GenStaticMethod',... {'System.Int32'},... 5);
Invoke Static Generic Functions of a Generic Class
If a static function is a member of a generic class, create a class definition
using the NET.GenericClass constructor:
genClsDef = NET.GenericClass('NetDocGeneric.SampleGenericClass',... 'System.Double');
To invoke static method GenStaticMethod of
SampleGenericClass, call
NET.invokeGenericMethod with the class definition:
ret = NET.invokeGenericMethod(genClsDef,... 'GenStaticMethod',... {'System.Int32'},... 5);
Invoke Generic Functions of a Generic Class
If a generic method uses the same parameterized type as the generic class, you can
call the function directly on the class object. If the generic uses a different type
than the class, use the NET.invokeGenericMethod
function.