IntroduceIndexer(IAdviser<INamedType>, IType, string?, string?, IntroductionScope, OverrideStrategy, Action<IIndexerBuilder>?, object?, object?)
Introduces an indexer to the target type, or overrides the implementation of an existing one, by specifying individual template methods for each accessor. Use the With<TNewDeclaration>(TNewDeclaration) method to apply the advice to another declaration than the current one.
Declaration
public static IIntroductionAdviceResult<IIndexer> IntroduceIndexer(this IAdviser<INamedType> adviser, IType indexType, string? getTemplate, string? setTemplate, IntroductionScope scope = IntroductionScope.Default, OverrideStrategy whenExists = OverrideStrategy.Default, Action<IIndexerBuilder>? buildIndexer = null, object? args = null, object? tags = null)
Parameters
Type | Name | Description |
---|---|---|
IAdviser<INamedType> | adviser | An adviser for a named type. |
IType | indexType | The type of the initial index parameter. |
string | getTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
string | setTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
IntroductionScope | scope | Determines the scope (e.g. Instance or Static) of the introduced indexer. The default scope depends on the scope of the template accessors. If the accessors are static, the introduced indexer is static. However, if the template accessors are non-static, then the introduced indexer copies of the scope of the target declaration of the aspect. |
OverrideStrategy | whenExists | Determines the implementation strategy when a indexer of the same name is already declared in the target type. The default strategy is to fail with a compile-time error. |
Action<IIndexerBuilder> | buildIndexer | |
object | args | An object (typically of anonymous type) whose properties map to parameters or type parameters of the template methods. |
object | tags | An optional opaque object of anonymous type passed to the template method and exposed under the Tags property of the meta API. |
Returns
Type | Description |
---|---|
IIntroductionAdviceResult<IIndexer> | An IIndexerBuilder that allows to dynamically change the name or type of the introduced indexer. |
See Also
IntroduceIndexer(IAdviser<INamedType>, Type, string?, string?, IntroductionScope, OverrideStrategy, Action<IIndexerBuilder>?, object?, object?)
Introduces an indexer to the target type, or overrides the implementation of an existing one, by specifying individual template methods for each accessor. Use the With<TNewDeclaration>(TNewDeclaration) method to apply the advice to another declaration than the current one.
Declaration
public static IIntroductionAdviceResult<IIndexer> IntroduceIndexer(this IAdviser<INamedType> adviser, Type indexType, string? getTemplate, string? setTemplate, IntroductionScope scope = IntroductionScope.Default, OverrideStrategy whenExists = OverrideStrategy.Default, Action<IIndexerBuilder>? buildIndexer = null, object? args = null, object? tags = null)
Parameters
Type | Name | Description |
---|---|---|
IAdviser<INamedType> | adviser | An adviser for a named type. |
Type | indexType | The type of the initial index parameter. |
string | getTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
string | setTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
IntroductionScope | scope | Determines the scope (e.g. Instance or Static) of the introduced indexer. The default scope depends on the scope of the template accessors. If the accessors are static, the introduced indexer is static. However, if the template accessors are non-static, then the introduced indexer copies of the scope of the target declaration of the aspect. |
OverrideStrategy | whenExists | Determines the implementation strategy when a indexer of the same name is already declared in the target type. The default strategy is to fail with a compile-time error. |
Action<IIndexerBuilder> | buildIndexer | |
object | args | An object (typically of anonymous type) whose properties map to parameters or type parameters of the template methods. |
object | tags | An optional opaque object of anonymous type passed to the template method and exposed under the Tags property of the meta API. |
Returns
Type | Description |
---|---|
IIntroductionAdviceResult<IIndexer> | An IIndexerBuilder that allows to dynamically change the name or type of the introduced indexer. |
See Also
IntroduceIndexer(IAdviser<INamedType>, IReadOnlyList<(IType Type, string Name)>, string?, string?, IntroductionScope, OverrideStrategy, Action<IIndexerBuilder>?, object?, object?)
Introduces an indexer to the target type, or overrides the implementation of an existing one, by specifying individual template methods for each accessor. Use the With<TNewDeclaration>(TNewDeclaration) method to apply the advice to another declaration than the current one.
Declaration
public static IIntroductionAdviceResult<IIndexer> IntroduceIndexer(this IAdviser<INamedType> adviser, IReadOnlyList<(IType Type, string Name)> indices, string? getTemplate, string? setTemplate, IntroductionScope scope = IntroductionScope.Default, OverrideStrategy whenExists = OverrideStrategy.Default, Action<IIndexerBuilder>? buildIndexer = null, object? args = null, object? tags = null)
Parameters
Type | Name | Description |
---|---|---|
IAdviser<INamedType> | adviser | An adviser for a named type. |
IReadOnlyList<(IType Type, string Name)> | indices | The types and names of the index parameters. |
string | getTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
string | setTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
IntroductionScope | scope | Determines the scope (e.g. Instance or Static) of the introduced indexer. The default scope depends on the scope of the template accessors. If the accessors are static, the introduced indexer is static. However, if the template accessors are non-static, then the introduced indexer copies of the scope of the target declaration of the aspect. |
OverrideStrategy | whenExists | Determines the implementation strategy when a indexer of the same name is already declared in the target type. The default strategy is to fail with a compile-time error. |
Action<IIndexerBuilder> | buildIndexer | |
object | args | An object (typically of anonymous type) whose properties map to parameters or type parameters of the template methods. |
object | tags | An optional opaque object of anonymous type passed to the template method and exposed under the Tags property of the meta API. |
Returns
Type | Description |
---|---|
IIntroductionAdviceResult<IIndexer> | An IIndexerBuilder that allows to dynamically change the name or type of the introduced indexer. |
See Also
IntroduceIndexer(IAdviser<INamedType>, IReadOnlyList<(Type Type, string Name)>, string?, string?, IntroductionScope, OverrideStrategy, Action<IIndexerBuilder>?, object?, object?)
Introduces an indexer to the target type, or overrides the implementation of an existing one, by specifying individual template methods for each accessor. Use the With<TNewDeclaration>(TNewDeclaration) method to apply the advice to another declaration than the current one.
Declaration
public static IIntroductionAdviceResult<IIndexer> IntroduceIndexer(this IAdviser<INamedType> adviser, IReadOnlyList<(Type Type, string Name)> indices, string? getTemplate, string? setTemplate, IntroductionScope scope = IntroductionScope.Default, OverrideStrategy whenExists = OverrideStrategy.Default, Action<IIndexerBuilder>? buildIndexer = null, object? args = null, object? tags = null)
Parameters
Type | Name | Description |
---|---|---|
IAdviser<INamedType> | adviser | An adviser for a named type. |
IReadOnlyList<(Type Type, string Name)> | indices | The types and names of the index parameters. |
string | getTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
string | setTemplate | The name of the method of the aspect class whose type and implementation will be used as a template for the getter, or |
IntroductionScope | scope | Determines the scope (e.g. Instance or Static) of the introduced indexer. The default scope depends on the scope of the template accessors. If the accessors are static, the introduced indexer is static. However, if the template accessors are non-static, then the introduced indexer copies of the scope of the target declaration of the aspect. |
OverrideStrategy | whenExists | Determines the implementation strategy when a indexer of the same name is already declared in the target type. The default strategy is to fail with a compile-time error. |
Action<IIndexerBuilder> | buildIndexer | |
object | args | An object (typically of anonymous type) whose properties map to parameters or type parameters of the template methods. |
object | tags | An optional opaque object of anonymous type passed to the template method and exposed under the Tags property of the meta API. |
Returns
Type | Description |
---|---|
IIntroductionAdviceResult<IIndexer> | An IIndexerBuilder that allows to dynamically change the name or type of the introduced indexer. |