C#でExternal Objectを作成した時の備忘録。
一応流れ的なことと、引数の渡し方を中心に書きます。
あくまでも個人的にやった結果なので、他のやり方もあるだろうし
もっといい方法もいっぱいあると思います。
参考リンク
参考
カテゴリ:外部オブジェクトwiki.genexus.jp
環境
GeneXus16
Visual Studio Community 2019
事前準備
その1の続きです。
SDTをパラメーター
SDTをパラメーターとして渡したい場合の設定です。
まずはGeneXusの「GxClasses.dll」をVisualStudioに取り込みます。
参照の追加から「GxClasses.dll」を追加。
GxClasses.dll はターゲットディレクトリのbinに入っているはず。
クラスを追記します。
using System;
namespace AddClassLibrary
{
public class GxCsTest
{
public static string GetString(String str)
{
var test = "C# Add Library";
return str + ":" + test;
}
public static string SdtString(GeneXus.Utils.GxUserType sdt)
{
var test = sdt.ToJSonString();
return test;
}
}
}
ソリューションのクリーンとソリューションのリビルドを行います。
GeneXusで「External Object」を編集します。
GeneXusのイベントを編集します。
Event 'TEST'
// C#で文字結合
&Vartest = GxCsTest.GetString("TESTだよ!")
MSG(&Vartest)
// C#でSDTをJsonに変換
&SDT1 = new()
&SDT1.Id = 99
&SDT1.Name = !"oqiita"
&SDT1.Date= &Today
&Vartest = GxCsTest.SdtString(&SDT1)
MSG(&Vartest)
Endevent
GeneXusのターゲットディレクトリを開き、DLLを配置します。
KBのターゲットディレクトリ¥bin¥AddClassLibrary.dll
※普通はGeneXus内のファイルオブジェクトに設定して、コピー機能を利用するのが楽だと思いますが今回はお試しなので手動配置です。
ここまできたらGeneXusをビルドします。
実行結果
ブラウザからボタンを押して、JSON文字列が表示されれば成功です。
まぁGeneXus内部でもToJsonは出来るんですけど、
External ObjectにSDTを渡す場合には、この方法が有効です。
まとめ
次はパラメーターにSDTをListで指定する方法。
コレクションとはちょっと違うかも?
以上です。