C# - Új osztály származtatása egy DLL-ben lévő osztályból

forráskód letöltése
Képzeljük el a következő esetet: létrehozunk egy DLL-t, benne egy tetszőleges osztályt. Ezt a Dll-t és a benne lévő osztályt egy EXE-ből szeretnénk felhasználni, de úgy, hogy az osztályból származtatunk egy újat az EXE-n belül és ki is egészítjük új tulajdonságokkal.
A Visual Studio.NET nyelveiben erre is lehetőségünk nyílik, a megvalósítás pedig igen egyszerű feladat.
Kezdjük először is a DLL létrehozásával. Ezt a DllParent névtérben tesszük meg, az osztálynak pedig a BaseClassInDll nevet választjuk. Ebbe az osztályba létrehozunk egy A nevű int típusú property-t, melynek az adattároláson kívül semmi egyéb teendője nincs.
namespace DllParent
{
  public class BaseClassInDll
  {
    private int FA = 0;
    public int A
    {
      get { return FA; }
      set { FA = value; }
    }  
  }
}
A DLL-t ezek után fordítsuk le és nézzük miként használhatjuk fel az EXE-ben. Először is azt kell elérnünk, hogy a DllParent névtér elérhető legyen a programunkból. Ehhez válasszuk a Project - Add reference menüpontot. A megjelenő ablakban a Projects lapon látható lesz a DllParent. Ezt kijelölve kattintsuk a Select, majd az OK gombra. Ezzel a szükséges hivatkozást megtettük, most már elérhető lesz a névtér:
using DllParent;
Most jön a következő lépés: mielőtt felhasználnánk az új osztályt, származtassunk belőle egy másikat és egészítsük ki egy új tulajdonsággal. Ehhez nem kell mást tennünk, mint ősosztályként megadni a DllParent névtérben lévő BaseClassInDll nevű osztályt. Látható tehát, hogy egy másik DLL-ben lévő osztály felhasználása ősosztályként igen egyszerű feladat.
Létrehozunk még egy B nevű int típusú property-t az új osztályba, melynek a NewClass nevet adtuk.
 public class NewClass: DllParent.BaseClassInDll
 {
   private int FB = 0;
   public int B
   {
     get { return FB; }
     set { FB = value; }
   }
 }
Most már jöhet az új osztály felhasználása: létrehozunk belőle egy példányt, majd értéket adunk, mind az A, mind a B property-jének, végül e kettő összegét megjelenítjük egy Label kontrolon.
 private void button1_Click(object sender, System.EventArgs e)
 {
   NewClass x = new NewClass();
   x.A = 5;
   x.B = 10;
   label1.Text = (x.A + x.B).ToString();
 }