単純な .NET クラスへのアクセス
System.DateTime の例
この例は、システムに既に読み込まれている機能にアクセスする方法を示しています。System.Windows.Forms の例では、アセンブリを MATLAB® に読み込む方法を示します。
この例に続くトピックでは、MATLAB で .NET をお使いいただくときに役立つ、主要な手順と考え方を紹介します。アセンブリの詳細については、アセンブリは .NET クラスのライブラリを参照してください。.NET クラス ライブラリの詳細については、.NET に関する詳細で説明されているサードパーティのドキュメンテーションを参照してください。
Microsoft® .NET アセンブリには、MATLAB で使用できる System.DateTime などのクラスがあります。以下のコードはオブジェクトを作成し、DateTime プロパティおよびメソッドを使用して、現在の日付と時刻に関する情報を表示します。
% Create object for current date and time netDate = System.DateTime.Now; % Display properties netDate.DayOfWeek netDate.Hour % Call methods ToShortTimeString(netDate) AddDays(netDate,7); % Call static method System.DateTime.DaysInMonth(netDate.Year,netDate.Month)
System.Windows.Forms の例
この例では、関数 NET.addAssembly を使用してアセンブリを読み込むことにより、.NET クラスを MATLAB で認識できるようにする方法を説明します。
他の .NET クラスと同様に、Windows.Forms クラスはアセンブリの一部です。クラスを操作するには、NET.addAssembly を呼び出してアセンブリを MATLAB に読み込みます。ベンダーのドキュメンテーションには、アセンブリ名が記載されています。
NET.addAssembly('System.Windows.Forms') import System.Windows.Forms.* buttons = MessageBoxButtons.YesNo result = MessageBox.Show("Yes or no?","Message Box",buttons)
プロンプトに応答してメッセージ ボックスを閉じます。
MATLAB は起動時にそのアセンブリ (mscorlib) を動的に読み込むため、System.DateTime の例は関数 NET.addAssembly を呼び出しません。
メモ
MATLAB のアセンブリはアンロードできません。独自のアセンブリを変更し、リビルドする場合、変更にアクセスするには MATLAB を再起動しなければなりません。
コンストラクターからの .NET オブジェクトの作成
前節の例では Now プロパティを使用して DateTime オブジェクトを作成しました。この例では、いずれかの DateTime "コンストラクター" を使用してオブジェクトを作成する方法を示します。
myDate = System.DateTime(2000,1,31);
このコンストラクター、つまり任意のメソッドを呼び出すには、その引数リスト、つまり "関数のシグネチャ" を知らなければなりません。ベンダーの製品ドキュメンテーションには関数のシグネチャが記載されています。MATLAB 関数 methodsview を使用してシグネチャを表示することもできます。methodsview('System.DateTime') と入力し、次の表に示すような DateTime エントリのリストを検索します。
| 名前 | 戻り値の型 | 引数 |
|---|---|---|
DateTime | System.DateTime obj |
|
.NET ドキュメンテーションによると、以下のシグネチャは DateTime 構造体の新しいインスタンスを指定した年、月、日に初期化します。この情報は変数 myDate に必要です。
| 名前 | 戻り値の型 | 引数 |
|---|---|---|
DateTime | System.DateTime obj | (int32 scalar year, |
詳細については、メソッド シグネチャの読み取りを参照してください。
.NET オブジェクトの情報の表示
ベンダーのドキュメンテーションには DateTime オブジェクトに関する情報が記載されていますが、properties や methods などの MATLAB コマンドを使用して .NET オブジェクトの情報を表示できます。以下に例を示します。
% Display an object netDate = System.DateTime.Now % Display its properties properties System.DateTime % Display its methods methods System.DateTime
MATLAB に次の情報が表示されます (プロパティ値は特定の日時を反映します)。
詳細については、以下を参照してください。
.NET データ型の紹介
MATLAB で .NET オブジェクトを使用するには、MATLAB での .NET データ型の処理方法を理解しなければなりません。たとえば、以下の DateTime プロパティおよびメソッドにより、さまざまな .NET データ型の変数が作成されます。
netDate = System.DateTime.Now; thisDay = netDate.DayOfWeek; thisHour = netDate.Hour; thisDate = ToLongDateString(netDate); thisTime = ToShortTimeString(netDate); monthSz = System.DateTime.DaysInMonth(netDate.Year,netDate.Month); whos
Name Size Bytes Class netDate 1x1 112 System.DateTime monthSz 1x1 4 int32 thisDate 1x1 112 System.String thisDay 1x1 104 System.DayOfWeek thisHour 1x1 4 int32 thisTime 1x1 112 System.String
MATLAB では、型がクラス名として表示されます。
これらの変数を MATLAB で使用するには、以下の内容を検討します。
数値 (
int32) — MATLAB は .NET 数値型を等価な MATLAB 型にマッピングして保持します。以下の例では、hはint32型です。h = thisHour + 1;
詳細については.NET 型の MATLAB 型へのマッピングと数値型を参照してください。
文字列 (
System.String) —System.Stringオブジェクトを MATLAB string に変換するには、関数stringを使用します。disp("The time is " + string(thisTime))オブジェクト (
System.DateTime) —DateTimeオブジェクトの使用法については、.NET クラス ライブラリのドキュメンテーションを参照してください。列挙型 (
System.DayOfWeek) —DateTimeのドキュメンテーションによると、DayOfWeekは列挙型です。列挙メンバーを表示するには、以下を入力します。enumeration(thisDay)
詳細については、MATLAB での .NET 列挙型を参照してください。
サポートされている型とマッピングの一覧については、.NET オブジェクトから返されるデータの処理を参照してください。
