3ds Max 9 以降では、dotNetObject
の値のクラスは、DotNet オブジェクトのインスタンスをラップします。dotNetObject 値クラスは、DotNet System::Object
オブジェクトに対する MAXScript ラッパー クラスです。
dotNetObject クラスは、DotNet オブジェクトに関連するプロパティ、メソッド、およびイベントを、反映(リフレクション)を介して公開します。
プロパティ アクセスには、MAXScript の数値データ タイプ(必要に応じて桁数を調整)、文字列、ブール値、dotNetControl、dotNetObject、dotNetClass の各値が使用されます。
dotNetObject のプロパティに対するアクセスには、通常のプロパティ アクセスの指定[object.property]、および getProperty()
/ setProperty()
メソッドが使用されます。
オブジェクト メソッドにアクセスすると、dotNetMethod インスタンスが作成されるか、オプションとして RuntimeMethodInfo インスタンスをラッピングする dotNetObject が作成されます。
イベント ハンドラの追加および管理には新しいメソッドが使用されます。イベントが発生すると、これらの新しいメソッドは呼び出すべきコールバック関数の登録および登録解除を行います。コールバック関数に渡される引数には、オブジェクト、イベント名、イベント ハンドラによって渡された引数などがあります。詳細は、「dotNet 構造体のメソッド」を参照してください。
同じタイプをラップする場合でも、dotNetClass と dotNetObject では違いがあります。
dotNetClass にアクセスする場合は System::Type にアクセスすることになりますが、dotNetObject の場合は System::Type によって記述されたオブジェクト タイプにアクセスします。
このため、たとえばある dotNetObject に対して showProperties() を呼び出した場合、この dotNetObject がラップする System::Type のプロパティを取得できますが、同じタイプをラップする dotNetClass に対して showProperties() を呼び出した場合は、System::Type 自体のプロパティを取得できます。
コンストラクタ:
dotNetObject { <dotNetClass> | <class_type_string> } ... additional args as needed ...
dotNetObject オブジェクトを構築します。
dotNetObject は、クラス タイプ文字列を使用して作成するか、dotNetClass から作成します。
例:
o1 = dotNetObject "System.Drawing.Size" 10 20 -- existing object o2 = dotNetClass "System.Drawing.Size" o3 = dotNetObject o2 10 20 -- newobject from class
オペレータ
== !=
メソッド:
getProperty <dotNetObject> <prop name> [ asDotNetObject:<boolean>]
指定されたプロパティまたはメソッドの値を返します。
asDotNetObject
が false(既定値)の場合は、この値は可能ならネイティブ MAXScrript 値に変換され、true の場合は、この値は dotNetControl または dotNetObject の値として返されます。
汎用メソッドのタイプ固有のバージョンを作成する例については、「dotNet 汎用クラス」を参照してください。
setProperty <dotNetObject> <prop name> <value>
指定されたプロパティの値を設定します。指定された値がネイティブ MAXScript 値である場合は、この値は可能であれば適切な DotNet 値に変換されます。
getPropNames <dotNetObject> [showStaticOnly:<boolean>] [declaredOnTypeOnly:<boolean>]
オブジェクトによって公開されるプロパティ名の配列を返します。
showStaticOnly
が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。
declaredOnTypeOnly
が true の場合は、指定したオブジェクトについて宣言されているプロパティのみが表示され、false (既定値)の場合はそのオブジェクトのプロパティとそのオブジェクトの派生元であるクラスが表示されます。
このメソッドの結果は、名前でソートされます。実際に返されるプロパティには、DotNet でいうプロパティとフィールドの 2 つの内容が含まれています。最初にプロパティがソート順に表示され、続いてフィールドがソート順に表示されます。
showProperties <dotNetObject> ["prop_pat"] [to:<stream>] [showStaticOnly:<boolean>] [showMethods:<boolean>] [showAttributes:<boolean>] [declaredOnTypeOnly:<boolean>]
プロパティ パターン(prop_pat)に一致する名前を持ったオブジェクトによって公開されるプロパティを表示します。
to
が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。
showStaticOnly
が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。
showMethods
が true の場合は、get メソッドおよび set メソッドのシグネチャ(存在する場合)が表示されます。既定値は false です。
showAttributes
が true の場合は、プロパティに関連付けられているアトリビュートが表示されます。既定値は false です。
declaredOnTypeOnly
が true の場合は、指定したオブジェクトについて宣言されているプロパティのみが表示され、false (既定値)の場合はそのオブジェクトのプロパティとそのオブジェクトの派生元であるクラスが表示されます。
このメソッドの結果は、名前でソートされます。実際に返されるプロパティには、DotNet でいうプロパティとフィールドの 2 つの内容が含まれています。最初にプロパティがソート順に表示され、続いてフィールドがソート順に表示されます。
showMethods <dotNetObject> ["prop_pat"] [to:<stream>] [showStaticOnly:<boolean>] [showSpecial:<boolean>] [showAttributes:<boolean>] [declaredOnTypeOnly:<boolean>]
プロパティ パターン(prop_pat)に一致する名前を持ったオブジェクトによって公開されるメソッドを表示します。
to
が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。
showStaticOnly
が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。
showSpecial
が true の場合は、通常はユーザによって呼び出されることのないメソッド(プロパティ値を設定するためのメソッドやイベント ハンドラを起動するためのメソッド)が表示されます。既定値は false です。
showAttributes
が true の場合は、プロパティに関連付けられているアトリビュートが表示されます。既定値は false です。
declaredOnTypeOnly
が true の場合は、指定したオブジェクトについて宣言されているプロパティのみが表示され、false (既定値)の場合はそのオブジェクトのプロパティとそのオブジェクトの派生元であるクラスが表示されます。
結果は、名前でソートされます。ソートにおいて名前の次に優先されるのは、パラメータの数です。
showEvents <dotNetObject> ["prop_pat"] [to:<stream>] [showStaticOnly:<boolean>] [declaredOnTypeOnly:<boolean>]
プロパティ パターン(prop_pat)に一致する名前を持ったオブジェクトによって公開されるイベントを表示します。
to
が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。
showStaticOnly
が true (既定値)の場合は静的プロパティのみが表示され、false の場合は静的プロパティとインスタンス プロパティが表示されます。
declaredOnTypeOnly
が true の場合は、指定したオブジェクトについて宣言されているプロパティのみが表示され、false (既定値)の場合はそのオブジェクトのプロパティとそのオブジェクトの派生元であるクラスが表示されます。
結果は、名前でソートされます。
dotNet.showConstructors <dotNetClass> [to:<stream>]
このオブジェクトによって公開されるコンストラクタを表示します。
to
が指定されていない場合はリスナーに出力され、それ以外の場合は指定されたストリームに出力されます。
結果は、名前でソートされます。ソートにおいて名前の次に優先されるのは、パラメータの数です。