Ecrire une DLL en C# sous Windows

Utilisation de Microsoft Visual Studio Express

La création d'une DLL en C# est nettement plus simple que son homologue en C. Il suffit d'ouvrir l'IDE Visual Studio et de créer un nouveau projet de Bibliothèque de Classes. Ensuite ce ne sont que des méthodes de classes traditionnelles, définies comme publiques pour être utilisables depuis l'extérieur du code.

Exemple de DLL simple

Notre DLL va simplement disposer d'une méthode permettant l'affichage d'un MessageBox.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace whatis
{
    public class whatis
    {
        public void affiche()
        {
            MessageBox.Show("C'est le Captain oh c'est Wot");
        }
    }
}
         

Lorsque vous aurez généré votre solution (en pressant F7 par exemple), vous obtiendrez le fichier DLL final dans le dossier bin\Debug.

Installer la DLL

Commençons par créer un nouveau projet basé sur une Form Windows basique. Ajoutez une référence à votre DLL en faisant un clic droit sur Références puis Ajouter une référence... et enfin Parcourir....

Une fois cette référence incluse, ajoutez une directive using whatis; en début de fichier de classe afin de pouvoir utiliser les méthodes de la DLL. La commande using va permettre de renseigner en fait le namespace de la classe servant de support à la DLL.

Il ne reste plus ensuite qu'à ajouter un bouton ainsi qu'un événement Click pour appeler la méthode affiche() de la DLL et ainsi faire apparaître le Messagebox.


using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using whatis;

namespace TestWhatisDLL
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // whatis.whatis est le type qui correspond au nom de la classe avec le nom du namespace
            whatis.whatis w = new whatis.whatis();
            w.affiche();
        }
    }
}
            

© LGB - 201x+