Code Maze Author

Marinko Spasojević

Hi, my name is Marinko Spasojevic. Currently, I work as a full-time .NET developer and my passion is web application development. Just getting something to work is not enough for me. To make it just how I like it, it must be readable, reusable, and easy to maintain. Prior to being an author on the CodeMaze blog, I had been working as a professor of Computer Science for several years. So, sharing knowledge while working as a full-time developer comes naturally to me.
Also find me here:


MY ARTICLES:

SOLID Principles in C# – Dependency Inversion Principle

The basic idea behind the Dependency Inversion Principle is that we should create the higher-level modules with its complex logic in such a way to be reusable and unaffected by any change from the lower-level modules in our application. To achieve this kind of...

SOLID Principles in C# – Interface Segregation Principle

The Interface Segregation Principle states that no client should be forced to depend on methods it does not use. So, this is the basic definition which we can read in many different articles, but what does this really mean? Let’s imagine that we are starting a new...

SOLID Principles in C# – Liskov Substitution Principle

The Liskov Substitution Principle (LSP) states that child class objects should be able to replace parent class objects without compromising application integrity. What this means essentially, is that we should put an effort to create such derived class objects which...

SOLID Principles in C# – Open Closed Principle

The Open Closed Principle (OCP) is the SOLID principle which states that the software entities (classes or methods) should be open for extension but closed for modification. But what does this really mean? Basically, we should strive to write a code that doesn’t...

SOLID Principles in C# – Single Responsibility Principle

While developing a project, we strive to write maintainable and readable code (besides the working part 😀 ). To accomplish this, each and every class should do its own task and do it well. Yes, it is quite important for a class to have no more than one task. If it...

.NET Core with SignalR and Angular – Real-Time Charts

SingalR is a library that helps us provide real-time web functionality to our applications. This means that our server can push data to any connected client as soon as that data is provided, in real-time, and vice versa. In this article, we are going to show you how...

Angular Material Table, Filtering, Sorting, Paging

We are going to divide this article into two major parts. The first part will consist of creating environment files, HTTP repository service, and creating a new Owner module with the lazy loading feature. As you can see, everything is Angular specific, so we won’t...

C# Intermediate – Delegates

In this article, we are going to talk more about delegates in C#. A delegate is a reference to a method. We can use a delegate object to pass it to the code in which we want to call a referenced method, without knowing at compile time which method will be invoked....

C# Intermediate – Generic List and Dictionary

In this article, we are going to talk more about Generic List and Dictionary in C#. A List<T> and Dictionary are very useful collections in C#, and we are going to discover its features in the rest of the article. Classes and Constructors Properties Static...

C# Intermediate – Queue, Stack, and Hashtable

In this article, we are going to talk about the queue, stack, and hashtable collections in C#, how to use them and how to use the methods they provide. Classes and Constructors Properties Static Members, Constants, and Extension Methods Anonymous and Nullable Types...

Getting Started With Angular Material

In this article, we are going to show you how to prepare our Angular project and how to install Angular Material in a few simple steps. But first things first. Before we start with the Angular Material features, we need to create the project first. So let’s dive right...

C# Intermediate – Generics

C# provides generics to help us remove the need for casting, to improve type safety and make it easier to create generic classes and generic methods. Classes and Constructors Properties Static Members, Constants, and Extension Methods Anonymous and Nullable Types...

C# Intermediate – Abstract Classes

Different classes may implement the same interface, and that is the common case in software development. What is common as well is that the method from that interface can have the same implementation in those classes. That could be a signal that we are doing something...

C# Intermediate – Interfaces

Inheriting from a class is a powerful mechanism, but the real inheritance power comes from an interface. An interface provides the members that a class that inherits from an interface must implement. We can look at the interface as a contract which states that a class...

C# Intermediate – Inheritance

Inheritance is one of the three key concepts in object-oriented programming. We can use inheritance to avoid repetition when different classes have a number of features in common and are related to each other. In this post, we are going to talk about C# inheritance,...

C# Intermediate – Enumerations

Besides the structures, C# supports another value type Enumeration. In this article, we are going to talk more about Enumerations in C#. Classes and Constructors Properties Static Members, Constants, and Extension Methods Anonymous and Nullable Types Structures...