Main Content

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.

Related Topics