
Explore recreating the generic list class in C# by studying open source .NET implementations and learning design and algorithms from projects, using GitHub source code to validate against the original.
Explore recreating a generic list in C#, learn from open source dotnet framework, validate design against the original, and build a minimal viable product through a practical walkthrough.
Build a minimal viable generic list that holds any type, supports collection initialization, indexer access, foreach iteration, add and remove, and default and expression-based sorting using tdd.
Build a small dotnet framework project in Visual Studio with xUnit and fluent assertion, and refer to framework source via the Ref12 extension for test driven development.
Learn to access and explore the dotnet framework source code with reference source, navigate with the Visual Studio F12 extension, and compare dotnet core and framework sites.
Implement a List<T> skeleton that can hold primitive or custom objects and create a test project with xUnit and FluentAssertions to verify instance creation.
Develop a generic add method for a custom list that works with primitive and custom types, validated by tests, using an array that doubles in size as items are added.
Expose a count property on the list class and validate add operations with tests across int, string, and employee lists, looping 25 times, and compare results with a dotnet-based list.
Implement the remove method in a list by shifting elements with array.copy, validate with test driven development on integer and string lists, and verify final count reflects the removal.
Validate add, remove, and count functionalities by updating tests to ensure counts reflect 23 for integer and 24 for string lists after removals.
Implement a generic get enumerator to enable foreach iteration over a generic list in C# using test-driven development, creating an internal enumerator and validating with employee list tests.
Demonstrates implementing a collection initializer for a generic list by enabling IEnumerable<T> support, using yield return to generate the enumerator, and applying explicit interface implementation and tests.
Implement a read/write indexer to retrieve and update list elements by index, including boundary checks and tests, mirroring array-like access in a generic list.
Implement a generic sort for the custom list using array.sort, validate with unit tests on integer and string lists, and ensure ascending order.
Explore implementing advanced sorting by expression in C# lists, using a comparison delegate to sort by a property, and building a custom internal comparer for expression-based sorting.
Explore how to display debug information for a C# list using debugger display attributes to show the list count and employee details in the ide.
Explore what net standard is and why it matters for creating cross-platform libraries. Learn how to choose target versions, understand compatibility with dotnet core, dotnet framework, and multi-targeting.
Target a multi-framework netstandard library in Visual Studio by building a console app against netstandard 2.0 and 1.0, then unload and edit the project to enable multi-targeting across frameworks.
First of all Why we need to re-create a class that is already available within the .Net framework library?
What is the purpose of cloning it? To answer that let me explain "Why this course"?
When it comes to Software development, everyone will look forward to working in a very interesting, complex, challenging projects which will simulate the thoughts, analytical, and technical skills. Working on such challenging projects will help anyone to gain tremendous knowledge on new things. However, in reality, not everyone will get the opportunity to work on something very cool and interesting.
But if one is interested in learning something cool, or some examples of some good design or advanced concepts, the best place to learn is looking at the source code of existing well-proven applications.
In today's world, many of the applications, frameworks, tools, utilities are completely open-source. Where we can explore every single source code file and understand the design, algorithm, logic behind it.
What is in this Course
This course is an attempt and walkthrough of an answer for a curious technical exploration question.
We all know that the .NET framework itself is open-source, which means we can access every class in .NET framework to see how it is written. With the situation of readily available source code, this is a self-challenge to re-create some of the existing .NET framework features from scratch and validate if our thought or design aligns with what is originally written within the .NET framework. Here in this course, I'm re-creating the experience of creating a List class from scratch along with the details.
We will explore the challenges and learning in the journey of building this feature. Time to time we will peak into the source code of .net framework to understand how this feature is implemented there.
Bonus
There are few chapters on the Netstandard library with detailed walkthru of creating the NetStandard library.