OwlDomain.Polyease 1.3.1

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package OwlDomain.Polyease --version 1.3.1                
NuGet\Install-Package OwlDomain.Polyease -Version 1.3.1                
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="OwlDomain.Polyease" Version="1.3.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OwlDomain.Polyease --version 1.3.1                
#r "nuget: OwlDomain.Polyease, 1.3.1"                
#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 OwlDomain.Polyease as a Cake Addin
#addin nuget:?package=OwlDomain.Polyease&version=1.3.1

// Install OwlDomain.Polyease as a Cake Tool
#tool nuget:?package=OwlDomain.Polyease&version=1.3.1                

Polyease

A polyfill-like package that is focused on making it easier to work around missing features, rather than provide hacky attempts at implementing them. The main purpose of this is to make it easier to write multi-targeting libraries.

An example of the spirit of this library is the CallerArgumentExpressionAttribute, under normal usage, the compiler provides the expression that was passed in for a different parameter as a string, some polyfill libraries try to imitate that behaviour, however this library will only provide a replica of the attribute class in order to make multi-targeting easier.

Installation

For the best results, use multi-targeting in your project, and then use conditional expressions to ensure that the package is only referenced when necessary.

In C#, that would look like this:

<PropertyGroup>
  <TargetFrameworks>netstandard2.1; net7.0</TargetFrameworks>
</PropertyGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">
  <PackageReference Include="OwlDomain.Polyease" Version="1.3.1" />
</ItemGroup>

The reason for this is that if you wanted to use the UnreachableException in your library code, and you were multi-targeting .NET Standard 2.1 and .NET 7, then when your library was being used under .NET Standard 2.1 the OwlDomain.Polyease package would become a dependency and would be required by your package, however if your library was being used under .NET 7 then the OwlDomain.Polyease package would not be referenced, and therefore it would never be a dependency.

The conditional expressions are not strictly necessary for the package to work, as the OwlDomain.Polyease package uses conditional compilation to ensure that the poly-eased features are only present when they are missing. However using the conditional expressions helps to keep your dependencies clean.

Usage

To use this package in your code, simply reference it, nothing else specific has to be done in order to use it, as the poly-eased features are placed in the same namespaces as the official versions.

License

This project (the source, and the release files, e.t.c) is release under the OwlDomain License.

Parts of this project are copied / derived under the MIT license from the .NET Foundation and Contributors, you can read their full license here.

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  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 is compatible.  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 is compatible.  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.
  • .NETCoreApp 3.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net5.0

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on OwlDomain.Polyease:

Package Downloads
OwlDomain.Common.Throw

A package that provides non-inlinable helper methods for throwing different exceptions, meant to reduce the compiled code size.

OwlDomain.Testing.Base

The base package for the OwlDomain.Testing framework that offers the bare minimum required for the framework structure.

OwlDomain.Testing.Assertions

The assertions package for the OwlDomain.Testing framework that contains all of the official assertion methods.

OwlDomain.Testing.MSTest

An MSTest adapter package for the OwlDomain.Testing framework.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.2 233 10/1/2024
1.3.1 87 10/1/2024
1.3.0 91 10/1/2024