Die Verwendung eines Delegaten eignet sich um Funktionen / Methoden zu kapseln.
Sie ähneln einem Funktionszeigen im klassischem C und C++, in C# sind diese
objektorientiert und typsicher.


Als Beispiel für die Verwendung eines Delegate habe ich 2 kleine Funktionen, die ich mit dem Delegate benutzen möchte.

Die Delegateklasse

namespace Delegates
{
    class LibDelegates
    {
        public delegate string SimpleDelegate(string s, string x);
 
        public delegate int SimpleMath(int in1, int in2);
 
        public string String2String1(string str1, string str2)
        {
            return (str2 + " " + str1);
        }
         
        public string String1String2(string str1, string str2)
        {
            return (str1 + " " + str2);
        } 
 
        public int Multiplitzieren(int zahl1, int zahl2)
        {
            return zahl1*zahl2;
        }
 
        public int Addieren(int zahl1, int zahl2)
        {
            return zahl1 + zahl2;
        }
 
    }
}

Der Programmaufruf

using System;
 
namespace Delegates
{
    class Program
    {
        static void Main(string[] args)
        {
            var myDel = new LibDelegates();
             
            var myDelegate1 = new LibDelegates.SimpleDelegate(myDel.String1String2);
            var myDelegate2 = new LibDelegates.SimpleDelegate(myDel.String2String1);
             
            Console.WriteLine("Delegate mit String");
            Console.WriteLine("Vor/Nach: {0}", myDelegate1("Vor", "nach"));
            Console.WriteLine("Vor/Nach: {0}", myDelegate2("Vor", "nach"));
 
            var myDelegate3 = new LibDelegates.SimpleMath(myDel.Multiplitzieren);
            var myDelegate4 = new LibDelegates.SimpleMath(myDel.Addieren);
             
            Console.WriteLine("Delegate mit Int");
            Console.WriteLine("Multiplikation: {0}", myDelegate3(5, 5));
            Console.WriteLine("Addition: {0}",myDelegate4(5, 5));
 
            Console.ReadLine();
 
        }
       
    }
}

 

Neuste Einträge

Synology Docker Image

Projekt vorbereiten und veröffentlichen

Dockerfile erstellen

dotnet publish -c Release -o ./publish

 

 

Lege im selben NAS-Verzeichnis eine Datei Dockerfile an:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
COPY publish/ ./
EXPOSE 80
ENTRYPOINT ["dotnet", "MeinProjekt.dll"]

Passe den Namen der DLL an dein Projekt an.

Optional: HTTPS-Zertifikat erzeugen

dotnet dev-certs https -ep ./aspnetapp.pfx -p <Passwort>

 

Docker-Image auf dem NAS bauen

ssh admin@<NAS-IP>
cd /volume1/docker/meinprojekt
sudo docker build -t meinprojekt:latest .

Container starten

sudo docker run -d -p 8080:80 --name meinprojekt meinprojekt:latest

 

Reverse Proxy einrichten (optional)

Im DSM unter Systemsteuerung > Anwendungsportal > Reverse Proxy:

  • Quelle: https://meinprojekt.de → Ziel: http://localhost:8080

  • SSL-Zertifikat zuweisen

 

Wiederverwendbare Struktur

docker/
├── meinprojekt/
│   ├── Dockerfile
│   ├── publish/
│   └── configs/
├── https/
└── keys/