ActivateAnything 0.2.0

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.0
dotnet add package ActivateAnything --version 0.2.0
<PackageReference Include="ActivateAnything" Version="0.2.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ActivateAnything --version 0.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

ActivateAnything

AnythingActivator.Instance.New&lt;T&gt;() 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.

ActivateAnything

AnythingActivator.Instance.New&lt;T&gt;() 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.

Release Notes

ChangeLog
     ---------
     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 206 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