MicroElements.Reflection.Sources 1.8.0

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
.NET Standard 2.1
dotnet add package MicroElements.Reflection.Sources --version 1.8.0
NuGet\Install-Package MicroElements.Reflection.Sources -Version 1.8.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MicroElements.Reflection.Sources" Version="1.8.0">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MicroElements.Reflection.Sources --version 1.8.0
#r "nuget: MicroElements.Reflection.Sources, 1.8.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install MicroElements.Reflection.Sources as a Cake Addin
#addin nuget:?package=MicroElements.Reflection.Sources&version=1.8.0

// Install MicroElements.Reflection.Sources as a Cake Tool
#tool nuget:?package=MicroElements.Reflection.Sources&version=1.8.0



MicroElements source only package: Reflection. Classes: TypeExtensions, TypeCheck, ObjectExtensions, Expressions, CodeCompiler, FriendlyName.



Gets friendly (human readable) name for the type.


// Without GetFriendlyName
typeof(List<ValueTuple<int?, string>?>).Name.Should().Be("List`1");
typeof(List<ValueTuple<int?, string>?>).FullName.Should().StartWith("System.Collections.Generic.List`1[[System.Nullable`1[[System.ValueTuple`2[[System.Nullable`1[[System.Int32, System.Private.CoreLib");
// With GetFriendlyName
typeof(List<(int Key, string Value)>).GetFriendlyName().Should().Be("List<ValueTuple<int, string>>");


  • For for standard and primitive types uses aliases: string, object, bool, byte, char, decimal, double, short, int, long, sbyte, float, ushort, uint, ulong, void. Example: Int32int.
  • You can replace standard aliases with typeAliases param
  • For generic types uses angle brackets: List'1List<int>
  • For array types uses square brackets: Int32[]int[]
  • For Nullable value types adds ? at the end
  • Uses recursion. Example: List<Tuple<int, string>>
  • Uses cache: every name builds only once. You can use uncached BuildFriendlyName.
  • ThreadSafe: true

Other (Description TBD):

  • TypeExtensions
  • TypeCheck
  • ObjectExtensions
  • CodeCompiler
  • Expressions
Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.1
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on MicroElements.Reflection.Sources:

Package Downloads
MicroElements.Shared.Sources The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

MicroElements source packages metapackage.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.8.0 176 12/17/2022
1.7.0 157 11/15/2022
1.6.0 160 11/11/2022
1.5.0 176 11/7/2022
1.4.0 271 6/4/2022
1.3.1 340 1/12/2022
1.3.0 268 1/9/2022
1.2.1 253 12/13/2021
1.2.0 382 12/11/2021
1.1.0 282 10/31/2021
1.0.0 246 10/18/2021

# Changelog

## [1.8.0] - 2022-12-17
- Changed: `MicroElements.Reflection.TypeCache` renamed to `MicroElements.Reflection.TypeCaching`
- Added: `LazyTypeCache`
- Added: `TypeCache.AppDomainTypes` and `TypeCache.AppDomainTypesUpdatable`
- Changed: `FriendlyName` switched to lazy type cache with updatable app domain types

## [1.7.0] - 2022-11-15
- Changed: FriendlyName become more functional. All main methods now use functions as extension points.
- Changed: Added GetName to ITypeCache that allow to use it without TypeCache fields knowledge. Also it can be used in FriendlyName methods.

## [1.6.0] - 2022-11-11
- Changed: TypeLoader extensions simplified
- Added: FriendlyName: added ParseFriendlyName extension
- Added: TypeCache

## [1.5.0] - 2022-10-09
- Changed: FriendlyName nullable types support, more documentation and tests

## [1.4.0] - 2022-05-28
- Added: FriendlyName that allows to get friendly (human readable) name for the type.

## [1.3.1] - 2022-01-12
- Changed: MicroElements.Collections.Sources bumped to 1.3.0

## [1.3.0] - 2022-01-09
- Changed: Package reference MicroElements.Formatting.Sources replaced with MicroElements.Text.Sources

## [1.2.0] - 2021-12-10
- Added: TypeLoader
- Added: AndAlso ExpressionExtensions

## [1.1.0] - 2021-11-08
- Added: Expressions GetPropertySetter, GetPropertyGetterAndSetter, Mutate

## [1.0.0] - 2021-10-17
- CodeCompiler, ObjectExtensions, TypeCheck, TypeExtensions extracted from MicroElements.Functional and other MicroElements projects

Full release notes can be found at: https://github.com/micro-elements/MicroElements.Shared/blob/master/src/MicroElements.Reflection.Sources/CHANGELOG.md