Category Archives: C#
Host oder Webhost mit Autofac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
/* Web: var builder = WebApplication.CreateBuilder(args); builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); */ var builder = Host.CreateDefaultBuilder() .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureAppConfiguration((hostContext, config) => { config .SetBasePath(System.IO.Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true) .AddJsonFile($"appsettings.{Environment.MachineName}.json", optional: true) .AddEnvironmentVariables(); }) .ConfigureServices((hostContext, services) => { IConfiguration config = hostContext.Configuration; Console.WriteLine(config.GetDebugView()); services.AddLogging(b => { b.AddDebug(); b.AddConsole(); }); // Register over IServiceCollection }) .ConfigureContainer<ContainerBuilder>(builder => { builder.RegisterInstance(new LoggerFactory()) .As<ILoggerFactory>(); builder.RegisterGeneric(typeof(Logger<>)) .As(typeof(ILogger<>)) .SingleInstance(); // Register over Autofac ContainerBuilder }); App = builder.Build(); var service = (AutofacServiceProvider)App.Services; this.Container = service.LifetimeScope; var myService = this.Container.Resolve<MyService>(); |
Entity Framework EF – Tabellen Models generieren lassen
Alt + T -> “NU” eingeben
1 |
scaffold-DbContext "Server=XXX; Database=XXX; user id=sa; password = XXX;TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Models\XXX" -Context XXXContext -Force -UseDatabaseNames -Tables XXX |
Template parsen in C#
Ok habe ich mir gedacht. Es wird ja wohl nicht so schwer sein folgenden Code zu parsen und die Templates entsprechend zu ersetzen:
1 2 3 4 5 6 7 8 9 10 11 |
Dies ist ein Test bla bla bla {{for group in Groups}} Die Bezeichnung der Gruppe ist: {{group.Title}} {{for subGroup in a.SubGroups}} Die Bezeichnung der Untergruppe ist: {{subGroup.Title}} und auch hier kann ich auf die Gruppe zugreifen: {{group.Title}} {{/for}} {{/for}} Und das Ende vom Lied ist das Ende vom Lied |
vue.js oder mustache verwendet eine ähnliche Syntax. Ich könnte an dieser Stelle mustache für C# verwenden und er würde mir das Template ersetzen, allerdings benötige ich nicht nur das Ergebnis als […]
Bibliotheken für Authorisierung
Das Thema Authorisierungen ist sehr komplex und es gibt dazu viele Ansätze. Hier ist eine Liste von Bibliotheken: Casbin Vergleich Casbin mit OPA: OPA vs Casbin (github.com) https://www.openpolicyagent.org/ oso Documentation — oso Documentation (osohq.com) (Nur Python und Java) ory/ladon: A SDK for access control policies: authorization for the microservice and IoT age. Inspired by AWS […]
ASP Core 3.1 inkl VueCLI mit mehreren VueApps verwenden
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.SpaServices; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; using VueCliMiddleware; namespace ASPMultipleVueSPA { public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on […]
ASP Core Configuration vererben
public IConfiguration Configuration { get; } in ServiceCollection services.Configure<BaseConfiguration>(this.Configuration); services.Configure<ChildConfiguration>(this.Configuration); Die ChildConfiguration erbt von BaseConfiguration Hat die ChildConfiguration Unterknoten, erben auch die Unterknoten. So wird die Konfiguration “erweitert”
Integrations Test mit Dependency Injection MsTest v2 .Net Core 3.1
Möchte man einen Integrationstest schreiben und dabei dependency injection nutzen, muss man folgendermaßen vorgehen: Im Besten Fall teilt ma die Ausführende Applikation z.B. Web Applikation, Console etc und eine Bibliothek. In die Bibliothek kommt die Auslagerung der StartUp:
1 2 3 4 5 6 7 |
public static class ServiceCollectionExtensions { public static void UseMyModule(this IServiceCollection services) { services.AddTransient<IMyClass, MyClass>(); } } |
Im Testprojekt wird eine Basis Klasse definiert, die dieses Modul einliest. Nun kann in CofigureServices services.UseMyModule() […]
Async await
Wie funktionier await? Ein Thread ist wie eine Pipeline, die einen bestimmten Code in die CPU gibt. Mal angenommen Thread 1 (Ui Thread) will etwas downloaden und dann auf der UI darstellen. Während des Http Requests ist die Ui gesperrt. Weil der Thread 1 darauf wartet, bis der Server geantwortet hat. Mit await wird ein […]
Zahl als String mit 2 Nachkommastellen und mit Punkt als Tausendertrennzeichen
1 2 3 4 5 |
1.ToString("#,0.00") // 1,00 1000.ToString("#,0.00") // 1.000,00 1000.12 // 1.000,12 1000.126.ToString("#,0.00") // 1.000,13 0.12.ToString("#,0.00") // 0,12 |
Alle Country Codes als SQL Query
Einfach eine Konsolenanwendung erstellen und folgendes Snippet reinkopieren:
Login