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).
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:
- 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