FriendlyOperation

概略
アプリケーションの内部操作を呼び出す際に使用します。
このライブラリの特徴的で、根幹をなす重要な定義です。
しかし、使用方法はシンプルです。
「引数と戻り値のルール」を参照お願いします。



delegate情報
public delegate AppVar FriendlyOperation(params object[] args);

解説
アプリケーション内部操作呼び出しdelegateです。

戻り値
操作に戻り値がある場合、アプリケーション内に宣言された変数内部に格納され、その変数を操作するクラスが返ります。
戻り値がない場合はnullが返ります。

引数
args
実行する操作に対応した引数です。
null、シリアライズ可能なオブジェクト、AppVarが指定可能です。


引数と戻り値のルール
操作がメソッドの場合
引数
呼び出すメソッドに対応した引数。
戻り値
呼び出すメソッドに戻り値があるならAppVar、ない場合はnull。
サンプル
//アプリケーション内部に変数を宣言
AppVar dic = app.Dim(new Dictionary<int, string>());

//メソッド呼び出し
dic["Add"](1, "1");
dic["Add"](2, "2");

//メソッド呼び出し out, refで値を取得したい場合は、AppVarを使用する。
//それ以外の場合は、シリアライズされて転送され、テスト対象アプリケーションのメモリとなり、そこに格納される。
AppVar value = app.Dim();//nullで宣言された変数
AppVar isSuccess = dic["TryGetValue"](1, value);

//戻り値はアプリケーション内部に格納される。必要ならシリアライズして取得
bool isSuccessCore = (bool)isSuccess.Core;

//valueに取得された値が格納されている
string valueCore = (string)value.Core;


操作がフィールドの場合
値を取得する場合
引数
なし。
戻り値
取得した変数が格納されたAppVar。
値を設定する場合
引数
設定するオブジェクト。
戻り値
null。
サンプル
//以下のクラスを操作するサンプルです。
//class MyDataClass
//{
//        public int data;
//}

//生成
AppVar myData = app.Dim(new NewInfo<MyDataClass>());

//設定
myData["data"](100);

//取得
AppVar value = myData["data"]();
int coreValue = (int)value.Core;

操作がプロパティーの場合
値を取得する場合
引数
なし。
戻り値
取得した変数が格納されたAppVar。
値を設定する場合
引数
設定するオブジェクト。
戻り値
null。
サンプル
//アプリケーション内部に変数を宣言
AppVar point = app.Dim(new NewInfo("System.Drawing.Point"));

//設定
point["X"](100);

//取得
AppVar x = point["X"]();
int xValue = (int)x.Core;

操作がインデクサープロパティーの場合
値を取得する場合
引数
インデクサー引数。
戻り値
取得した変数が格納されたAppVar。
値を設定する場合
引数
インデクサー引数とその後に設定するオブジェクト。
戻り値
null。
サンプル①
//初期化
AppVar array = app.Dim(new List<int>());
array["Add"](0);
array["Add"](1);
array["Add"](2);

//設定
array["[]"](1, 100);

//取得
AppVar index1 = array["[]"](1);
int value = (int)index1.Core;

サンプル②
//以下のクラスを操作するサンプルです。
//class IndexAccess
//{
//        public int this[int index, string key];
//}

//アプリケーション内部に変数を宣言
AppVar access = app.Dim(new NewInfo<IndexAccess>());

//設定 インデクサー引数が2個以上の場合は,で表現する。
access ["[,]"](1, "key", 100);

//取得
AppVar value = myData["[,]"](1, "key");
int coreValue = (int)value.Core;