.NET ジェネリック メソッドの呼び出し
"ジェネリック メソッド" は 1 つ以上のパラメーター化型を宣言します。詳細については、.NET に関する詳細の説明に従って、.NET クラス ライブラリのドキュメンテーションで generics を検索してください。
関数 NET.invokeGenericMethod を使用してジェネリック メソッドを呼び出します。関数 NET.invokeGenericMethod の使用法は、メソッドが静的であるかどうか、またジェネリック クラスのメンバーであるかどうかによって異なります。
NetDocGeneric の例の使用
C# の例 NetDocGeneric.cs は matlabroot/extern/examples/NET/NetSample フォルダーにあり、簡単なジェネリック メソッドを定義して NET.invokeGenericMethod 構文を説明します。コードを表示するには、MATLAB® エディターでファイルを開きます。MATLAB 例での .NET アプリケーションのビルドで説明した NetDocGeneric アセンブリをビルドします。
アセンブリ NetDocGeneric を作成し、c:\work フォルダーに配置したら、以下の MATLAB コマンドを入力してアセンブリを読み込みます。
dllPath = fullfile('c:','work','NetDocGeneric.dll'); NET.addAssembly(dllPath);
メモ
関数 methods および関数 methodsview はジェネリック メソッドをリストしません。反射を使用した .NET ジェネリック メソッドの表示の例を使用してください。
ジェネリック クラス メンバー関数の呼び出し
NetDocGeneric.SampleClass の GenMethod メソッドは、K 型として入力引数を返します。GenMethod を呼び出すには、cls オブジェクトを作成します。
cls = NetDocGeneric.SampleClass();
5 を System.Int32 などの整数パラメーター型に変換するには、このオブジェクトをもつ関数 NET.invokeGenericMethod を呼び出します。
ret = NET.invokeGenericMethod(cls,... 'GenMethod',... {'System.Int32'},... 5);
GenMethodWithMixedArgs メソッドは、パラメーター化型の引数である arg1 と arg2、および bool 型の厳密に型指定された引数 tf をもちます。tf フラグは、GenMethodWithMixedArgs が返す引数を制御します。arg1 を返すには、以下の構文を使用します。
ret = NET.invokeGenericMethod(cls,'GenMethodWithMixedArgs',... {'System.Double'},5,6,true);
arg2 を返すには、以下の構文を使用します。
ret = NET.invokeGenericMethod(cls,'GenMethodWithMixedArgs',... {'System.Double'},5,6,false);
静的ジェネリック関数の呼び出し
静的メソッド GenStaticMethod を呼び出すには、完全修飾クラス名をもつ関数 NET.invokeGenericMethod を呼び出します。
ret = NET.invokeGenericMethod('NetDocGeneric.SampleClass',... 'GenStaticMethod',... {'System.Int32'},... 5);
ジェネリック クラスの静的ジェネリック関数の呼び出し
静的関数がジェネリック クラスのメンバーである場合は、NET.GenericClass コンストラクターを使用してクラス定義を作成します。
genClsDef = NET.GenericClass('NetDocGeneric.SampleGenericClass',... 'System.Double');
SampleGenericClass の静的メソッド GenStaticMethod を呼び出すには、クラス定義をもつ関数 NET.invokeGenericMethod を呼び出します。
ret = NET.invokeGenericMethod(genClsDef,... 'GenStaticMethod',... {'System.Int32'},... 5);
ジェネリック クラスのジェネリック関数の呼び出し
ジェネリック メソッドでジェネリック クラスと同じパラメーター化型が使用されている場合は、クラス オブジェクトから関数を直接呼び出すことができます。ジェネリック メソッドでジェネリック クラスとは異なる型が使用されている場合は、関数 NET.invokeGenericMethod を使用します。