ActivateAnything 0.2.1

ActivateAnything — abstract types, concrete types, constructor dependencies — ActivateAnything just resolves it all and gives you a result.

An `AnythingActivator` will make an extreme effort to find and instantiate a concrete class
which is assignable to a `Type`, whether or not the Type is concrete, whether or not the
Type has constructor dependencies, whether or not a suitable concrete subtype is found
in any currently loaded `Assembly`.

The attempt to find and instantiate suitable Types is rule-driven.

There are three kinds of `IActivateAnythingRule`.
- `IFindTypeRule` provides rules for where to look for candidate concrete subtypes of an abstract type
- `IActivateInstanceRule` simply returns an instance of a concrete type.
- `IChooseConstructorRule` rules for how to choose between constructors when a concrete `Type` has been chosen.

The <em>extremity</em> of the effort lies in its recursive attempt to find and construct the <em>dependencies</em>.

There is a newer version of this package available.
See the version list below for details.
Install-Package ActivateAnything -Version 0.2.1
dotnet add package ActivateAnything --version 0.2.1
<PackageReference Include="ActivateAnything" Version="0.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ActivateAnything --version 0.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

ActivateAnything

AnythingActivator.Instance.New<T>()

will make an extreme effort to find and instantiate a concrete class which is assignable to a Type, whether or not
the Type is concrete, whether or not the Type has constructor dependencies, whether or not a suitable concrete subtype
is found in any currently loaded Assembly.

The attempt to find and instantiate suitable Types is driven by three kinds of IActivateAnythingRule.

  • IActivateInstanceRule simply returns an instance of a concrete type.
  • IFindTypeRule provides rules for where to look for candidate concrete subtypes of an abstract type
  • IChooseConstructorRule rules for how to choose between constructors when a concrete Type has been chosen.

The <em>extremity</em> of the effort lies in its recursive attempt to find and construct the <em>dependencies</em>.

The default ruleset will

  • Search first the currently executing assembly, then its references, then its base directory, then the current working directory
  • Prefer constructors with more parameters over constructors with fewer.

Customise or replace the default ruleset with the provided rules or custom rules.

See FixtureBase for example usage to reduce the cost of Unit Testing by automating setup
and the injection of fakes.

ActivateAnything

AnythingActivator.Instance.New<T>()

will make an extreme effort to find and instantiate a concrete class which is assignable to a Type, whether or not
the Type is concrete, whether or not the Type has constructor dependencies, whether or not a suitable concrete subtype
is found in any currently loaded Assembly.

The attempt to find and instantiate suitable Types is driven by three kinds of IActivateAnythingRule.

  • IActivateInstanceRule simply returns an instance of a concrete type.
  • IFindTypeRule provides rules for where to look for candidate concrete subtypes of an abstract type
  • IChooseConstructorRule rules for how to choose between constructors when a concrete Type has been chosen.

The <em>extremity</em> of the effort lies in its recursive attempt to find and construct the <em>dependencies</em>.

The default ruleset will

  • Search first the currently executing assembly, then its references, then its base directory, then the current working directory
  • Prefer constructors with more parameters over constructors with fewer.

Customise or replace the default ruleset with the provided rules or custom rules.

See FixtureBase for example usage to reduce the cost of Unit Testing by automating setup
and the injection of fakes.

Release Notes

ChangeLog
     ---------
     0.2.1.0 ActivateInstance Rule can activate a Func<Type> as well as a Type
     0.2.0.0 Expose LastActivationTree and LastErrorList after a call to New()
     0.1.0.2 fix non-public constructors. ChooseConstructorWith(Most|Fewest)ParametersAttribute.PreferPublic defaults to true.
     0.1.0.1 ActivateAnything first release.

  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.

Version History

Version Downloads Last updated
0.3.0 200 11/26/2018
0.2.1 99 11/23/2018
0.2.0 149 11/21/2018
0.1.0.1 111 11/17/2018