Volání .NET tříd z X++


Někdy je zapotřebí použít objekty z prostředí .NET. Vytrovřil jsem proto jednoduchou ukázku jak se toho dá dosáhnout v Dynamics AX (4.0 nebo 2009).

Nejprve je potřeba vytvořit .NET projekt ve Visual Studiu 2005 (NET Framework 2.0).

image

Zvolíme tedy:

  • New Project
  • Visual C#
  • Windows
  • Class Library

V tomto projetku vytvoříme třídy podobnou přílkladu

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace SampleNET
{
    public class SamplePublicClass
    {
        public string kfHelloWorld(string name)
        {
            return "Hello Word! How are you " + name;
        }

        public string kfDialog(string text, string caption)
        {
            DialogResult dr = MessageBox.Show(text, caption, MessageBoxButtons.YesNo);

            if (dr == DialogResult.Yes)
                return "Yes!";

            return "No!";
        }
    }
}

Zkompilovaný soubor - v mém případě SampleNET.DLL - nakopírujeme do Client\Bin klienté aplikace Dynamics AX. DLL se musí nakopírovat na každou klientskou stanici. Poté již stačí jen CLR zaregistrovat v Dynamics AX. To se provádí v sekci AOT - References pomocí volby "Add References".

Postup zobrazuje následující obrázek:

image

  • Add Reference
  • Browse
  • Vybrat požadovaný DLL soubor.
  • Open
  • OK - uzavřít dialog.

Nyní je jíž potřebný dll soubor plně dostupný z prostředí AX. Funkci můžeme ověřit jednoduchým skriptem:

static void JobCallingNET(Args _args)
{
    str result;
    str name;
    str text;
    str caption;
    str dialog;
    SampleNET.SamplePublicClass spc = new SampleNET.SamplePublicClass();
    ;
    name = "Karel";
    text = "Text";
    caption = "Caption";
 
    result = spc.kfHelloWorld(name);
    
    dialog = spc.kfDialog(text, caption);
    
    info(result);
    info(dialog);
}

Po stuštění se zobrazí dialog vyžadující odpověď "Yes/No", následovaný oknem InfoLogu, který obsahuje obligátní "Hello World" a text podle stiskutého dialogového tlačítka.

Karel F

Comments (0)

Skip to main content