【GeneXus】C#でExternal Object(その2)

C#でExternal Objectを作成した時の備忘録。

一応流れ的なことと、引数の渡し方を中心に書きます。
あくまでも個人的にやった結果なので、他のやり方もあるだろうし
もっといい方法もいっぱいあると思います。

参考リンク


参考
カテゴリ:外部オブジェクトwiki.genexus.jp

環境

GeneXus16
Visual Studio Community 2019

事前準備

その1の続きです。

SDTをパラメーター

SDTをパラメーターとして渡したい場合の設定です。
まずはGeneXusの「GxClasses.dll」をVisualStudioに取り込みます。

参照の追加から「GxClasses.dll」を追加。
GxClasses.dll はターゲットディレクトリのbinに入っているはず。

クラスを追記します。

GxCsTest.cs

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でSDTを作成します。

GeneXusで「External Object」を編集します。

GxCsTest

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で指定する方法。
コレクションとはちょっと違うかも?

以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください