IntroduceParameter(IConstructor, string, IType, TypedConstant, Func<IParameter, IConstructor, PullAction>?, ImmutableArray<AttributeConstruction>)
Appends a parameter to a constructor by specifying its name and IType.
Declaration
[Obsolete("This overload does not work across project boundaries. Use an overload that accepts an IIntroduceConstructorParameterPullStrategy.")]
IIntroductionAdviceResult<IParameter> IntroduceParameter(IConstructor constructor, string parameterName, IType parameterType, TypedConstant defaultValue, Func<IParameter, IConstructor, PullAction>? pullAction, ImmutableArray<AttributeConstruction> attributes = default)Parameters
| Type | Name | Description |
|---|---|---|
| IConstructor | constructor | The constructor into which the new parameter will be appended. |
| string | parameterName | The name of the parameter. |
| IType | parameterType | The type of the parameter. |
| TypedConstant | defaultValue | The default value of the parameter. It must be type-compatible with |
| Func<IParameter, IConstructor, PullAction> | pullAction | An optional delegate that returns a PullAction specifying how to pull the new parameter from other child constructors.
A |
| ImmutableArray<AttributeConstruction> | attributes |
Returns
| Type | Description |
|---|---|
| IIntroductionAdviceResult<IParameter> |
IntroduceParameter(IConstructor, string, IType, TypedConstant, IPullStrategy?, ImmutableArray<AttributeConstruction>)
Appends an optional parameter (i.e. one that has a compile-time-constant default value) to a constructor by specifying its name
and IType. The new parameter is added directly to the existing constructor; existing callers can omit the
argument, so source compatibility is preserved. Binary compatibility is not preserved. Because the constructor count
is unchanged, this overload is the right choice for dependency-injection scenarios where the container requires exactly one
applicable constructor (for example, Microsoft.Extensions.DependencyInjection.ActivatorUtilities).
Declaration
IIntroductionAdviceResult<IParameter> IntroduceParameter(IConstructor constructor, string parameterName, IType parameterType, TypedConstant defaultValue, IPullStrategy? pullStrategy = null, ImmutableArray<AttributeConstruction> attributes = default)Parameters
| Type | Name | Description |
|---|---|---|
| IConstructor | constructor | The constructor into which the new parameter will be appended. |
| string | parameterName | The name of the parameter. |
| IType | parameterType | The type of the parameter. |
| TypedConstant | defaultValue | The default value of the parameter. It must be type-compatible with |
| IPullStrategy | pullStrategy | An optional IPullStrategy that specifies how to pull the new parameter from chained or derived constructors. |
| ImmutableArray<AttributeConstruction> | attributes | An optional list of custom attributes to add to the introduced parameter. |
Returns
| Type | Description |
|---|---|
| IIntroductionAdviceResult<IParameter> |
IntroduceParameter(IConstructor, string, IType, IPullStrategy?, ImmutableArray<AttributeConstruction>, IConstructorOverloadingStrategy?)
Appends a required parameter (i.e. one that has no default value) to a constructor by specifying its name and IType.
The framework also emits a forwarding constructor: a compile-time stub with the pre-mutation signature that chains
via : this(...) to the now-mutated constructor. The forwarding constructor obtains the new parameter's value from the
supplied IPullStrategy (for example, UseExpression(IExpression) for a non-constant
expression such as DateTime.Now, or IntroduceParameterAndPull(string?, IType?, IExpression?, IExpression?, bool, bool)
to cascade a dependency into chained and derived constructors). Because the pre-mutation signature remains callable, both
source and binary compatibility are preserved. This overload is the right choice when binary compatibility matters, when the
default must be a non-constant expression, or when a parameterless constructor must remain callable (for example, through
CreateInstance<T>() or the new() generic constraint). Pass a custom
IConstructorOverloadingStrategy to scope which constructors receive a forwarding constructor, or to opt out
entirely.
Declaration
IIntroductionAdviceResult<IParameter> IntroduceParameter(IConstructor constructor, string parameterName, IType parameterType, IPullStrategy? pullStrategy = null, ImmutableArray<AttributeConstruction> attributes = default, IConstructorOverloadingStrategy? overloadingStrategy = null)Parameters
| Type | Name | Description |
|---|---|---|
| IConstructor | constructor | The constructor into which the new parameter will be appended. |
| string | parameterName | The name of the parameter. |
| IType | parameterType | The type of the parameter. |
| IPullStrategy | pullStrategy | An optional IPullStrategy that specifies how to supply the new parameter's value in the forwarding constructor and in chained or derived constructors. |
| ImmutableArray<AttributeConstruction> | attributes | An optional list of custom attributes to add to the introduced parameter. |
| IConstructorOverloadingStrategy | overloadingStrategy | An optional IConstructorOverloadingStrategy that decides, per mutated constructor, whether the framework
should generate a forwarding constructor preserving the pre-mutation signature. A |
Returns
| Type | Description |
|---|---|
| IIntroductionAdviceResult<IParameter> |
IntroduceParameter(IConstructor, string, Type, TypedConstant, Func<IParameter, IConstructor, PullAction>?, ImmutableArray<AttributeConstruction>)
Appends a parameter to a constructor by specifying its name and Type.
Declaration
[Obsolete("This overload does not work across project boundaries. Use an overload that accepts an IIntroduceConstructorParameterPullStrategy.")]
IIntroductionAdviceResult<IParameter> IntroduceParameter(IConstructor constructor, string parameterName, Type parameterType, TypedConstant defaultValue, Func<IParameter, IConstructor, PullAction>? pullAction, ImmutableArray<AttributeConstruction> attributes = default)Parameters
| Type | Name | Description |
|---|---|---|
| IConstructor | constructor | The constructor into which the new parameter will be appended. |
| string | parameterName | The name of the parameter. |
| Type | parameterType | The type of the parameter. |
| TypedConstant | defaultValue | The default value of the parameter. It must be type-compatible with |
| Func<IParameter, IConstructor, PullAction> | pullAction | An optional delegate that returns a PullAction specifying how to pull the new parameter from other child constructors.
A |
| ImmutableArray<AttributeConstruction> | attributes |
Returns
| Type | Description |
|---|---|
| IIntroductionAdviceResult<IParameter> |
IntroduceParameter(IConstructor, string, Type, TypedConstant, IPullStrategy?, ImmutableArray<AttributeConstruction>)
Appends an optional parameter (i.e. one that has a compile-time-constant default value) to a constructor by specifying its name
and Type. The new parameter is added directly to the existing constructor; existing callers can omit the
argument, so source compatibility is preserved. Binary compatibility is not preserved. Because the constructor count
is unchanged, this overload is the right choice for dependency-injection scenarios where the container requires exactly one
applicable constructor (for example, Microsoft.Extensions.DependencyInjection.ActivatorUtilities).
Declaration
IIntroductionAdviceResult<IParameter> IntroduceParameter(IConstructor constructor, string parameterName, Type parameterType, TypedConstant defaultValue, IPullStrategy? pullStrategy = null, ImmutableArray<AttributeConstruction> attributes = default)Parameters
| Type | Name | Description |
|---|---|---|
| IConstructor | constructor | The constructor into which the new parameter will be appended. |
| string | parameterName | The name of the parameter. |
| Type | parameterType | The type of the parameter. |
| TypedConstant | defaultValue | The default value of the parameter. It must be type-compatible with |
| IPullStrategy | pullStrategy | An optional IPullStrategy that specifies how to pull the new parameter from chained or derived constructors. |
| ImmutableArray<AttributeConstruction> | attributes | An optional list of custom attributes to add to the introduced parameter. |
Returns
| Type | Description |
|---|---|
| IIntroductionAdviceResult<IParameter> |
IntroduceParameter(IConstructor, string, Type, IPullStrategy?, ImmutableArray<AttributeConstruction>, IConstructorOverloadingStrategy?)
Appends a required parameter (i.e. one that has no default value) to a constructor by specifying its name and Type.
The framework also emits a forwarding constructor: a compile-time stub with the pre-mutation signature that chains
via : this(...) to the now-mutated constructor. The forwarding constructor obtains the new parameter's value from the
supplied IPullStrategy (for example, UseExpression(IExpression) for a non-constant
expression such as DateTime.Now, or IntroduceParameterAndPull(string?, IType?, IExpression?, IExpression?, bool, bool)
to cascade a dependency into chained and derived constructors). Because the pre-mutation signature remains callable, both
source and binary compatibility are preserved. This overload is the right choice when binary compatibility matters, when the
default must be a non-constant expression, or when a parameterless constructor must remain callable (for example, through
CreateInstance<T>() or the new() generic constraint). Pass a custom
IConstructorOverloadingStrategy to scope which constructors receive a forwarding constructor, or to opt out
entirely.
Declaration
IIntroductionAdviceResult<IParameter> IntroduceParameter(IConstructor constructor, string parameterName, Type parameterType, IPullStrategy? pullStrategy = null, ImmutableArray<AttributeConstruction> attributes = default, IConstructorOverloadingStrategy? overloadingStrategy = null)Parameters
| Type | Name | Description |
|---|---|---|
| IConstructor | constructor | The constructor into which the new parameter will be appended. |
| string | parameterName | The name of the parameter. |
| Type | parameterType | The type of the parameter. |
| IPullStrategy | pullStrategy | An optional IPullStrategy that specifies how to supply the new parameter's value in the forwarding constructor and in chained or derived constructors. |
| ImmutableArray<AttributeConstruction> | attributes | An optional list of custom attributes to add to the introduced parameter. |
| IConstructorOverloadingStrategy | overloadingStrategy | An optional IConstructorOverloadingStrategy that decides, per mutated constructor, whether the framework
should generate a forwarding constructor preserving the pre-mutation signature. A |
Returns
| Type | Description |
|---|---|
| IIntroductionAdviceResult<IParameter> |