MvvmGen 1.1.0 and the New Special Edition: PURE CODE GENERATION – No Runtime Dependency For Your Project!

In the last blog post I introduced you to MvvmGen, the new MVVM library built with a strong focus on C# Source Generators. Some of you asked in the comments of the blog post and also per email if also the library could be generated, so that there is no runtime dependency.

Today, I'm happy to announce that this is now possible. Check out the requested special edition on NuGet: MvvmGen.PureCodeGeneration. This edition generates everything for you, not only the ViewModels, but also the full library. That means, there is no runtime dependency for your application. Let's look at this edition in this blog post, and let me also show you what's new in version 1.1.0.

(more…)
Read more...

Introducing the brand-new MvvmGen Library – Writing ViewModels for your XAML Applications Has Never Been More Productive and Easier

In the nights of the past weeks, I built a brand-new MVVM library that you can use in your XAML-based .NET applications. The library is called MvvmGen. It uses Roslyn-powered C# Source Generators to create all the ViewModel-specific boilerplate for you, and it is built with .NET Standard 2.0, which means you can use it in your WPF, WinUI, Uno Platform, Xamarin.Forms and .NET MAUI apps.

MvvmGen is a modern, next-generation MVVM library that I built from ground up with a strong focus on C# Source Generators. All the repetitive code (also known as boilerplate) that you normally write to create a ViewModel class gets generated for you. So, let's welcome the new library and let's take a look at it.

(more…)
Read more...

Store Data of Your Blazor App in the Local Storage and in the Session Storage

To store local data, today's browsers support a local storage and a session storage. The difference between the two is that the session storage is only available per tab, and the stored data is deleted once you close the tab with the application. The local storage on the other side stores data across sessions. Even when you close the browser and when you re-open it again, the data of the local storage is still there. It will be there as long until you delete it.

So, the difference between the two is how long the data is stored. Beside that, they work exactly the same. Both can store key/value pairs, and those key/value pairs are stored in plain text.

In this blog post, let's look at how to use the local storage and the session storage in your Blazor App.

(more…)
Read more...

Using Tuples in C# to Initialize Properties in the Constructor and to Deconstruct Your Object

Recently I was asked by a developer what this code block here actually is:

public Friend(string firstName, string middleName, string lastName)
  => (FirstName, MiddleName, LastName) = (firstName, middleName, lastName);

This is actually a constructor that uses an expression body and tuples.

(more…)
Read more...

C# 9.0: Covariant Return Types – Specify More Specific Return Types in Overridden Methods and Properties

In the previous blog posts you learned about different C# 9.0 features:

In this blog post, let's look at another very interesting feature of C# 9.0, the covariant return types.

(more…)
Read more...

What is Actually the Universal Windows Platform and what is WinUI, MSIX, and Project Reunion?

This morning I got a wonderful message from a very smart and great person who watched my latest Pluralsight course, Fundamentals of Building .NET Desktop Applications. The course explains the .NET UI frameworks Windows Forms, WPF, UWP, WinUI (including Uno platform), and .NET MAUI in an overview and shows how to build your first .NET Desktop Apps for Windows with WinUI, WPF, and Windows Forms. The structure of the course is like this:

  • Knowing the UI frameworks for .NET Desktop Apps
  • Creating Your First WinUI App
  • Building Your First WPF App
  • Writing Your First Windows Forms App
(more…)
Read more...