Archiv der Kategorie: Softwareentwicklung

Artikel im Themenbereich Softwareentwicklung

C# Get Classes by an assembly

Hello  buddies,

today i want to show you a code snippet where you can get all class names of an internal or external library or an assembly. You have to add the library as an Reference.

I am developing in the company a framework, where i need the names of classes of an external library which i added as reference.

We need a using, called System.Reflection.Assembly.

The code to get classes of an assembly:

static void Main(string[] args)
{
ListOfClasses("Company.LibraryNameOrAssemblyName"); //call the method with a library. which you add as reference.
Console.Read();
}
public static string[] ListOfClasses(string name)
{
 
Assembly assembly = Assembly.ReflectionOnlyLoad(name); //create an new object of Assembly type.
string[] classes = new string[assembly.GetTypes().Length]; //get count of types 
 
int counter = 0; //counter for array index, loop through available types
foreach (var classtype in assembly.GetTypes())
{
classes[counter] = classtype.FullName; //add Name of class to array.
counter++; //increase index counter
}
return classes; // return result as array
 
}

If you execute the code you will get back an array filled with classnames from the library.

c# assembly classes

C# get classes of assembly

 

Hope, someone will find it helpfull.

Blogger Weiterleitung

Blogger Weiterleitung / Blogger forwarding

blogger-forwarding, Weiterleitung

blogger-forwarding

Betreibt man auf der Google Tochterfirma Blogger com einen Blog und möchte diesen Blog
auf einer anderen Seite weiterleiten zum Beispiel wie in meinem Fall, einem WordPress Umzug,
kann man in dem Blog eine Weiterleitung bzw. ein “Forwarding” auf Blogger.com erstellen.

Dazu gehen wir wie folgt vor:
Step 1)
Wir gehen auf:

Blogger draft home.
Wählen den Blog aus, auf dem wir eine Weiterleitung erstellen möchten

Step 2)
Wir wählen in der Navigation “Vorlage”, “HTML bearbeiten“. Hier empfehle ich euch dringend ein Backup von der HTML zu machen!

Step 3)
In Zeile vier solltet ihr den Beginn des <head>-Bereichs haben.
In unter diesem tragen wir nach eurem Bedürfnissen folgendes Skript ein:

<script>// <![CDATA[ if(window.location.href == &#39;https://EureBogSeite.blogspot.de/&#39;) { window.location=&quot;https://www.EureNeueSeite.TLD&quot;; } // ]]></script>

Wie es bei mir aussieht solltet ihr im Screenshot erkennen können:

Blogger forwarding, skript, blogger Weiterleitung

Blogger forwarding

Das war es eigentlich auch schon der Besucher wird nach dem Speichern der Änderungen auf eurer neuen Seite automatisch weitergeleitet.
Da immer mal etwas schief gehen kann, solltet ihr natürlich von eurer Vorlage ein Backup vorher anlegen.

AngularJS in Visual Studio

AngularJS mit Visual Studio

Vielleicht hast du ein Projekt oder eine Idee und möchtest diese mit AngularJS
umsetzen. Normalerweise reicht dazu ein normaler Editor, jedoch mag es der ein oder andere
gerne über Visual Studio entwickeln, in diesem Beitrag möchte ich euch erläutern, wie ihr das
Angular JS Framework in ein Visual Studio Projekt einbindet und damit auch arbeitet.

Als Minimum Vorraussetzung, benötigen wir das Visual Studio Community (kostenlos)
https://www.visualstudio.com/en-us/products/visual-studio-community-vs
Zusätzlich solltet ihr es auf die letzten Versionen updaten und euch die letzte Version die
Visual Studio Web Essentials installieren. https://vswebessentials.com/

Auswahl einer Web Vorlage

Angular Js in Visualstudio
Angular JS in Visual Studio, Empty ASP.NET Projekt

In diesem Eintrag nehme ich als Beispiel ein leeres Web, ASP.NET Web Application Projekt.

Lassen wir das Projekt nun mit F5 loslaufen, erhalten wir den Fehler 403 Forbidden.

Index.html anlegen

Jetzt fügen wir eine Datei mit dem Namen: index.html, in das Wurzelverzeichnis hinzu.
In dieser können wir im <body> Bereich “Hallo Welt” reinschreiben.
Lassen wir das Projekt nun nochmal erstellen und laufen, sollte sich die Ausgabe geändert haben:

AngularJS Index.html
AngularJS Index.html

Angular JS Framework in das Projekt einbinden
Möchte man eine AngularJs Applikation schreiben, müssen wir dazu das nötige
AngularJS Framework einbinden. Dies geschieht am besten über NuGet.

NuGet Package installieren

NuGet Package Angular JS Core in dem Projekt hinzufügen
NuGet Package Angular JS Core in dem Projekt hinzufügen

Dazu klicken wir wie im Bild oben schon zu erahnen ist auf “Manage NuGet Packages…”.

Anschließend klicken wir auf Browse und suchen dort nach “angularjs”.
Hier wählen wir die AngularJS.Core aus und installieren diese.

Unsere Projektmappe erweitert sich um das Angular JS Framework:

Jetzt sollten wir in unserer index.html das Framework referenzieren mit dieser Zeile:

<script src=”Scripts/angular.min.js”></script>

Grundlegende Angular App Struktur erstellen
Als erstes erstellen wir uns in der Solution ein Ordner Namens: “app”.
In diesem Verzeichnis erstellen wir zwei JavaScript Dateien:
app.module.js und main.js

Solution Explorer nach Angular JS Installation
Solution Explorer nach Angular JS Installation

app.module.js bearbeiten

Die app.module.js beinhaltet ein “Single-level” Modul. In diesem Beispiel, die Applikation hat ein
Application-Level Modul, welches weitere Module aus dem Projekt lädt. Die Datei app.module.js
verfolgt das Konzept, der Module, Controllers, Services, Direktive und Views.
Die o.g. Datei sollte als Grundlage folgenden Inhalt haben:

(function() {
‘use strict’;

angular.module(‘app’, []);

})();

Dieses Beispiel nutzt eine IIFE (Immediately-invoked function expression um den Code auszuführen.
(https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
Dieses “Pattern” wird von der Struktur von jedem Modul genutzt.
Man beachte die zweite Zeile: ‘use strict’;
Dies triggert neuere Browser dazu an, JavaScript im StrictMode auszuführen.

‘use strict’; ist optional, jedoch empfehlenswert für eine saubere Programmierung.

 

main.js bearbeiten

In der main.js Datei erstellen wir ein Controller, um auch später bei umfangreicheren Projekten,
konsistent zu bleiben, empfehle ich in dem Dateinamen, den Begriff “Controller” nicht zu verwenden.
Erklärt wird dies in einem Post von John Papa
https://www.johnpapa.net/angular-app-structuring-guidelines/
Wo wir gerade bei der Namensnennung sind, lege ich euch diese
Naming Guideline an Herz:
https://github.com/johnpapa/angular-styleguide#naming
Nun zum Inhalt des Controllers zurück; wir fügen folgendes in unserer main.js:

(function () {
‘use strict’;
angular        .module(‘app’)
.controller(‘Main’, main);
function main() {
var vm = this;
vm.welt = ‘welt’;
}
})();

Die function main, ist der Controller.
Nun benötigen wir noch eine View in der wir alles anzeigen können.

Index.html bearbeiten

Wir füllen unsere zuvor angelegte index.html mit folgenden HTML-Code:

<!DOCTYPE html> <html ng-app=”app”><head>    <title></title></head><body ng-controller=”Main as vm”>     <input type=”text” ng-model=”vm.food” placeholder=”Enter Welt.” />     <p>Hallo {{vm.food}}!</p>     <script src=”Scripts/angular.min.js”></script>    <script src=”app/app.module.js”></script>    <script src=”app/main.js”></script> </body></html>

Projekt starten

Speichern wir nun das Projekt und lassen es mit F5 erstellen.
sollte sich der Browser öffnen und folgendes anzeigen (Nach der Eingabe, des Wortes “Welt” in dem Textfeld.

Hallo Welt, AngularJS mit Visual Studio
Hallo Welt, AngularJS mit Visual Studio

 

Im <body>-Kontext seht ihr nun die Benutzung der Controller-Syntax  in der View.

Das VM im Quelltext ist dabei unsere Sogenannte Scope.

Das kleine Beispiel Projekt könnt ihr euch auch hier herunterladen, um das ganze ggf. besser nach zu vollziehen. Möchte man mit Javascript bisschen rum probieren ohne gleich Dateien auf dem PC erstellen zu müssen, so habt ihr die Möglichkeit im Browser mit JSFiddle ein wenig zu experimentieren.

C# Get directory size using LINQ, c# GetDirectorySize

C# Get directory size using LINQ, DirectorySize

Sometimes you need or must know the folder DirectorySize or frin more directories in C#.
In this case you can use this method, which get the folder size in c#, the output size is in bytes.

public static long DirectorySize(string parentDirectory)
{
return new DirectoryInfo(parentDirectory).GetFiles(searchPattern: "*", searchOption: SearchOption.AllDirectories).Sum(file =&gt; file.Length);
}

In this linq method you can also set an search pattern and choose if only TopDirectories or AllDirectories will be run through.

Generische Aufzählungen

Generische Aufzählungen

Das .NET Framework stellt uns im Namensraum „System.Collections.Generics“ generische Aufzählungen zur Verfügung. Generische Aufzählungen haben den Vorteil, dass sie sicherer und effizienter sind, da schon bei der Deklaration der Datentyp festgelegt wird.
In diesem Artikel erläutere ich neun generischen Aufzählungen:

Arrays (Felder)
• List
• LinkedList
• BindingList (Namensraum: „System.ComponentModel“)
• Dictionary<TKey, TValue>
• SortedList<TKey, TValue>
• SortedDictionary(TKey, TValue>
• Queue
• Stack

Arrays
Aufzählungen aus der Klasse „System.Array“ bietet die Möglichkeit große Datenmengen eines vorher festgelegten Datentyps und Feldgröße zu speichern. Die Werte eines Arrays werden über einen Index (z. B. MyArray[3]) angesprochen. Des Weiteren ist es möglich, mehrdimensionale Arrays zu verarbeiten. Um effizient mit Arrays zu arbeiten ist es notwendig die Größe der zu speichernden Feldern bereits bei der Deklaration festzulegen.

List
List arbeitet ähnlich wie das oben beschriebene Array. Der Zugriff eines Eintrags kann wie bei einem Arrays mit der Angabe eines Index aufgerufen werden. Es ist möglich die Aufzählung mit der Methode „Sort“ zu sortieren. Der entscheidende Vorteil dieser Aufzählung ist, das bei der Deklaration nicht feststehen muss, welche Größe die Aufzählung besitzt. List ändert beim hinzufügen (Methode „Add“) oder beim entfernen (Methode „Remove“) von Einträgen automatisch die Feldgröße.

LinkedList
Für manche Algorithmen und weiteren Anwendungsfällen ist es notwendig eine LinkedList-Aufzählung zu nutzen. Diese arbeitet ähnlich wie List, und bildet alle Elemente in die „LinkedListNode Klasse ab. Attribute wie Previous und Next verweisen auf Voränger und Nachfolgende Elemente.

BindingList
BindingList kann dazu verwendet werden, wenn Sie vorhaben eine Aufzählung direkt an einem Datenbanksteuerelement zu binden.

Dictionary<TKey, TValue>
In einer Dictionary Aufzählung kann statt eines numerischen Integer Indexes ein beliebiges Objekt verwendet werden wie zum Beispiel eine Zeichenkette (vom Typ „String“). Die Elemente der Aufzählung werden mit einem hash-Wert gespeichert, so kann man sicherstellen, dass nicht gleichnamige Objektnamen zu einer Dateninkonsistenz führen (Methoden dafür z.B. „GetHashCode“ und „ContainsKey“). Wie bei der List ist es möglich neue Elemente in die Dictionary<TKey, TValue> Aufählung einzufügen. In dieser Aufzählung kann nicht sortiert oder auf einzelne Elemente mit Hilfe eines (Integer) Indexes zugegriffen werden.
SortedList<TKey, TValue>
Die SortedList Aufzählung beinhaltet ähnlich Funktionen wie die Dictionary Aufzählung. Im Vergleich zur „SortedDictionary“ –Aufzählung unterscheidet sie sich mit dem Zugriff auf ein Element, auf dieses kann mit Angabe eines Indexes zugegriffen werden. Wenn bereits sortierte Elemente eingefügt werden wird von dieser Aufzählung weniger Speicher benötigt als eine „SortedDictionary“.

SortedDictionary(TKey, TValue)
Diese Aufzählung ähnelt dem Dictionary mit dem Unterschied das die Elemente automatisch sortiert werden. Der Vorteil dieser Aufzählung ist die schnellere Einfüge- und Löschaktionen von Elementen im Vergleich zu SortedList<TKey, TValue>.

Queue
Queue wird verwendet wenn die Elemente in der Reihenfolge genutzt werden soll, in der sie eingefügt wurde. Diese Klasse ist für eine komplexere Verwaltung funktionell eingeschränkter als z.B. die List oder Dictionary Klassen.

Stack
Dies Aufzählung Stack arbeitet wie Queue mit dem Unterschied das die umgekehrte Reihenfolge genutzt wird. Auch hier ist die weitere Verarbeitung und Verwaltung der Elemente eingeschränkter als die List und Dictionary Klasse.

Fazit
Mit dem .NET Framework haben wir eine mannigfaltige Möglichkeit eine für unseren Anwendungsfall passende, generische Aufzählung auszuwählen. Ist man sich jedoch noch nicht ganz sicher für welche man sich entscheiden soll kann man sich dazu entschließen das Thema noch weiter zu vertiefen, sich die einzelnen Möglichkeiten in Testprojekten genauer zu betrachten oder man nutzt auf Grund der vielfältigen, flexiblen Nutzungsmöglichkeiten die List oder Dictionary<TKey, TKValue> Klasse. Damit ist man für den Anfang gut beraten.

C# oder Visual Basic.NET?

C# oder Visual Basic?

Im .NET Framework stehen mehrere Programmiersprachen zur Auswahl, die wichtigsten sind C# (C Sharp) und Visual Basic.NET.
Im Großen und ganzem sind die Sprachen komplett gleichwertig. In beiden Sprachen gibt es Unterschiede, auf denen ich gleich näher eingehen möchte.

Wesentliche Vorteile von Visual Basic.NET
• Die Einschränkung in Visual Basic.NET, dass keine Pointer zur Verfügung stehen, ist prinzipiell auch als Vorteil anzusehen.
Es wird das Risiko verhindert „unsafe code“ zu entwickeln und somit die Robustheit und Integrität von Anwendungen / Daten zu beeinflussen.
• Wenn Quelltext von fremden eingesehen oder bearbeitet wird, ist es leichter den Quelltext zu verstehen und zu bearbeiten, da die Syntax lesbarer ist.
Wesentliche Vorteile von C#
• Viele Experten setzen auf C#, somit finden mehr Beispiele im Internet
• Wer bereits mit Sprachen wie PHP, Java, C(++) in Erfahrungen gesammelt hat, fällt dem Einstieg in C# leichter.
Unterschiede
• In C# ist es möglich „unsafe code“ zu programmieren. Dies wird benötigt um direkten Zugriff auf den Speicher zu erhalten (etwa durch Pointer).
• Java, PHP oder C(++)- Entwickler werden sich schnell an die Syntax von C# gewöhnen, während die Syntax von VB.NET vergleichbar mit der von VB6 oder VB-Skript ist.
• In VB.NET kann man auf ein Objekt mit der „With“ und „End With“ Struktur
• VB.NET lässt die Verwendung von Enums (Aufzählungen) in Interfaces (Schnittstellen) zu
• C# ermöglicht in einer „for“ –Schleife mehrere Bedingungen
• In C# sind Operatoren kürzer (UND-Operator: „&&“, VB.NET UND-Operator: „AndAlso“)
• C# ist Case-sensitive (Abhängig von Groß- und Kleinschreibung)

Letztendlich ist es eine Geschmackssache, ob Sie sich für C# oder VB.NET entscheiden. Beide Sprachen werden bei der Kompilierung in den IL (Intermediate Language) übersetzt, welche auf die gleichen .NET Libraries zugreift.
Es mag noch viele geben, die über die nicht vorhandene Portierbarkeit von .NET entwickelten Applikationen schimpfen, hier gibt es jedoch schon alternativen wie „Mono“, welches ermöglicht in C# oder Visual Basic .NET geschriebene Anwendungen auf einem z.B.: Linux System auszuführen. Schauen Sie am besten in beiden Sprachen mal rein und entscheiden Sie nach Ihrem Gefühl, welches Ihnen einfacher erscheint.

Vielleicht ist bei der Entscheidung in Betracht zu ziehen, ob Sie in Zukunft vielleicht noch Vorhaben in VB Skript, PHP oder in Java zu programmieren.