Template of a Visual Studio Project in C#

 

 

The template described here can be downloaded from the Internet as complete Visual Studio 

Projects with all necessary files. The template has been created with Microsoft Visual Studio 2019. 

Alternatively, the free community edition of Visual Studio 2019 can be used. For newer versions, 

some adjustments may be necessary.

 

Download of the template from the KilletSoft website

 

This template was kindly provided by Timo Hebel and Tim Hoogkamer from GreenGate AG.

 

The template consists of two projects.

 GeoDLLWrapper is a project that acts as an interface between the GeoDLL and C#.

 GeoDLLTest is another project that shows the method call of each method.

 

The following methods are implemented:

 Coordinate transformations:

         CoordTrans

         CoordTrans2

         CoordTrans3

         Meritrans (Without sample code in GeoDLLTest)

         SetCoordArea

 Other functions:

         GetAuthor

         GetDisclaimer

         GetDLLVersion

         GetErrorCode

         GetLicensee

         SetDllInit (Without sample code in GeoDLLTest)

         SetDLLWorkDir (Without sample code in GeoDLLTest)

         SetEvetnLoop

         SetInternErrsys

         SetLanguage

         SetMultiThreading

         SetSilence

         SetStaticUse

         SetStringAllocate

         SetUnlockCode

 

Excerpts from the source codes contained in both Visual Studio Projects are shown here. Only parts 

of the two projects are shown. The complete, functional template can be downloaded from the KilletSoft 

website (see above)!

 

// GeoDLLWrapper
using System;

using GeoDllWrapper;
using GeoDllWrapper.Enum;

namespace GeoDLLTest
{
  internal static class Program
  {
    private static void Main()
    {
    try
    {
      CallMethods();
    }
    catch (Exception e)
    {
      Console.WriteLine(e);
    }

    Console.ReadKey();
    }

    private static void CallMethods()
    {
    // --------------------------------------------------------------------------------
    // Instanz des GeoDLL-Wrappers
    // --------------------------------------------------------------------------------

    // TODO: Im Constructor müssen noch die Freischaltcodes und der Lizenznehmer
    // eingetragen werden. Alternativ kann das auch durch separaten Aufruf der Methode
    // SetUnlockCode nachträglich erfolgen.
    var transformer = new Transformer(true);

    // --------------------------------------------------------------------------------
    // Exemplarische Aufrufe der Wrapper-Methoden
    // --------------------------------------------------------------------------------

    var author = transformer.GetAuthor();
    Console.WriteLine(author + "\n");

    var disclaimer = transformer.GetDisclaimer();
    Console.WriteLine(disclaimer + "\n");

    var dllVersion = transformer.GetVersion();
    Console.WriteLine(dllVersion + "\n");

    var lastError = transformer.GetLastError();
    Console.WriteLine(lastError + "\n");

    var licensee = transformer.GetLicensee();
    Console.WriteLine(licensee + "\n");

    transformer.SetEventLoop(true);
    Console.WriteLine("Die Hintergrundbearbeitung von Eingaben wurde aktiviert. \n");

    transformer.SetLanguage(Language.German);
    Console.WriteLine("Die Sprache wurde auf Deutsch eingestellt. \n");

    transformer.SetMultiThreading(true);
    Console.WriteLine("MultiThreading wurde eingeschaltet. \n");

    transformer.SetSilence(true);
    Console.WriteLine("Meldungen der GEODLL werden nun ins EventLog ausgegeben. \n");

    transformer.SetStaticUse(true);
    Console.WriteLine("Die Verwendung von statischen Variablen wurde eingeschaltet. \n");

    transformer.SetStringAllocate(true); // müsste unseres Wissens nach so wieso akiv sein.
    Console.WriteLine("Die automatische Speicherreservierung für NULL-Strings wurde aktiviert. \n");

    transformer.CoordTrans(7.424655, 50.758545, "", CoordinateSystem.GEOGRD, ReferenceSystem.WGS84, out var c1Lng, out var c1Lat, out var c1Coords, CoordinateSystem.UTMREF,
             ReferenceSystem.WGS84, 0);

    Console.WriteLine(c1Coords);
    Console.WriteLine(c1Lat);
    Console.WriteLine(c1Lng + "\n");

    transformer.CoordTrans2(0, 0, "32ULB8888824157", CoordinateSystem.UTMREF, ReferenceSystem.WGS84, out var c2Lng, out var c2Lat, out var c2Coords, CoordinateSystem.GEOGRD,
            ReferenceSystem.WGS84, 0);

    Console.WriteLine(c2Coords);
    Console.WriteLine(c2Lat);
    Console.WriteLine(c2Lng + "\n");

    transformer.CoordTrans3(7.424655, 50.758545, 0, CoordinateSystem.GEO, ReferenceSystem.WGS84, out var c3Lng, out var c3Lat, 1, CoordinateSystem.GEO, ReferenceSystem.WGS84, 0);
    Console.WriteLine(c3Lat);
    Console.WriteLine(c3Lng + "\n");

    transformer.SetCoordArea(true);
    Console.WriteLine("Die Syntax- und Bereichsüberprüfung für die Quell- und Zielkoordinaten wurde eingeschaltet.");
    }
  }
}


// GeoDLLTest
using System;

using GeoDllWrapper;
using GeoDllWrapper.Enum;

namespace GeoDLLTest
{
  internal static class Program
  {
    private static void Main()
    {
    try
    {
      CallMethods();
    }
    catch (Exception e)
    {
      Console.WriteLine(e);
    }

    Console.ReadKey();
    }

    private static void CallMethods()
    {
    // --------------------------------------------------------------------------------
    // Instanz des GeoDLL-Wrappers
    // --------------------------------------------------------------------------------

    // TODO: Im Constructor müssen noch die Freischaltcodes und der Lizenznehmer 
    // eingetragen werden. Alternativ kann das auch durch separaten Aufruf der Methode 
    // SetUnlockCode nachträglich erfolgen.
    var transformer = new Transformer(true);

    // --------------------------------------------------------------------------------
    // Exemplarische Aufrufe der Wrapper-Methoden
    // --------------------------------------------------------------------------------

    var author = transformer.GetAuthor();
    Console.WriteLine(author + "\n");

    var disclaimer = transformer.GetDisclaimer();
    Console.WriteLine(disclaimer + "\n");

    var dllVersion = transformer.GetVersion();
    Console.WriteLine(dllVersion + "\n");

    var lastError = transformer.GetLastError();
    Console.WriteLine(lastError + "\n");

    var licensee = transformer.GetLicensee();
    Console.WriteLine(licensee + "\n");

    transformer.SetEventLoop(true);
    Console.WriteLine("Die Hintergrundbearbeitung von Eingaben wurde aktiviert. \n");

    transformer.SetLanguage(Language.German);
    Console.WriteLine("Die Sprache wurde auf Deutsch eingestellt. \n");

    transformer.SetMultiThreading(true);
    Console.WriteLine("MultiThreading wurde eingeschaltet. \n");

    transformer.SetSilence(true);
    Console.WriteLine("Meldungen der GEODLL werden nun ins EventLog ausgegeben. \n");

    transformer.SetStaticUse(true);
    Console.WriteLine("Die Verwendung von statischen Variablen wurde eingeschaltet. \n");

    transformer.SetStringAllocate(true); // müsste unseres Wissens nach so wieso akiv sein.
    Console.WriteLine("Die automatische Speicherreservierung für NULL-Strings wurde aktiviert. \n");

    transformer.CoordTrans(7.424655, 50.758545, "", CoordinateSystem.GEOGRD, ReferenceSystem.WGS84, out var c1Lng, out var c1Lat, out var c1Coords, CoordinateSystem.UTMREF,
             ReferenceSystem.WGS84, 0);

    Console.WriteLine(c1Coords);
    Console.WriteLine(c1Lat);
    Console.WriteLine(c1Lng + "\n");

    transformer.CoordTrans2(0, 0, "32ULB8888824157", CoordinateSystem.UTMREF, ReferenceSystem.WGS84, out var c2Lng, out var c2Lat, out var c2Coords, CoordinateSystem.GEOGRD,
            ReferenceSystem.WGS84, 0);

    Console.WriteLine(c2Coords);
    Console.WriteLine(c2Lat);
    Console.WriteLine(c2Lng + "\n");

    transformer.CoordTrans3(7.424655, 50.758545, 0, CoordinateSystem.GEO, ReferenceSystem.WGS84, out var c3Lng, out var c3Lat, 1, CoordinateSystem.GEO, ReferenceSystem.WGS84, 0);
    Console.WriteLine(c3Lat);
    Console.WriteLine(c3Lng + "\n");

    transformer.SetCoordArea(true);
    Console.WriteLine("Die Syntax- und Bereichsüberprüfung für die Quell- und Zielkoordinaten wurde eingeschaltet.");
    }
  }
}