MicroElements.Reflection.Sources 1.8.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
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">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>                
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 and Polyglot Notebooks. 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.Reflection.Sources

Summary

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

Extensions

FriendlyName

Gets friendly (human readable) name for the type.

Usage

// 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>>");

Notes:

  • 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 Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
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

MicroElements source packages metapackage.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.9.0 354 10/22/2023
1.8.0 624 12/17/2022
1.7.0 326 11/15/2022
1.6.0 359 11/11/2022
1.5.0 418 11/7/2022
1.4.0 471 6/4/2022
1.3.1 519 1/12/2022
1.3.0 394 1/9/2022
1.2.1 465 12/13/2021
1.2.0 590 12/11/2021
1.1.0 411 10/31/2021
1.0.0 395 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