Class MemberCloner
- Namespace
- AsmResolver.DotNet.Cloning
- Assembly
- AsmResolver.DotNet.dll
Provides a mechanism for deep-copying metadata members from external .NET modules into another module.
public class MemberCloner
- Inheritance
-
MemberCloner
- Inherited Members
Remarks
When multiple members are cloned in one go, the member cloner will fix up any references between the cloned members. For example, if a type or member is referenced in a method body, and this type or member is also included in the cloning process, the reference will be updated to the cloned member instead of imported.
Constructors
MemberCloner(ModuleDefinition)
Creates a new instance of the MemberCloner class.
public MemberCloner(ModuleDefinition targetModule)
Parameters
targetModule
ModuleDefinitionThe target module to copy the members into.
MemberCloner(ModuleDefinition, IMemberClonerListener)
Creates a new instance of the MemberCloner class.
public MemberCloner(ModuleDefinition targetModule, IMemberClonerListener listener)
Parameters
targetModule
ModuleDefinitionThe target module to copy the members into.
listener
IMemberClonerListenerThe callback listener used in the cloner.
MemberCloner(ModuleDefinition, Action<IMemberDefinition, IMemberDefinition>)
Creates a new instance of the MemberCloner class.
public MemberCloner(ModuleDefinition targetModule, Action<IMemberDefinition, IMemberDefinition> callback)
Parameters
targetModule
ModuleDefinitionThe target module to copy the members into.
callback
Action<IMemberDefinition, IMemberDefinition>The callback used in the cloner listener.
MemberCloner(ModuleDefinition, Func<MemberCloneContext, CloneContextAwareReferenceImporter>?)
Creates a new instance of the MemberCloner class.
public MemberCloner(ModuleDefinition targetModule, Func<MemberCloneContext, CloneContextAwareReferenceImporter>? importerFactory)
Parameters
targetModule
ModuleDefinitionThe target module to copy the members into.
importerFactory
Func<MemberCloneContext, CloneContextAwareReferenceImporter>The factory for creating the reference importer
MemberCloner(ModuleDefinition, Func<MemberCloneContext, CloneContextAwareReferenceImporter>?, IMemberClonerListener?)
Creates a new instance of the MemberCloner class.
public MemberCloner(ModuleDefinition targetModule, Func<MemberCloneContext, CloneContextAwareReferenceImporter>? importerFactory, IMemberClonerListener? clonerListener)
Parameters
targetModule
ModuleDefinitionThe target module to copy the members into.
importerFactory
Func<MemberCloneContext, CloneContextAwareReferenceImporter>The factory for creating the reference importer
clonerListener
IMemberClonerListenerThe listener used in the cloner.
Properties
FieldRvaCloner
Gets or sets the object responsible for cloning a data segment of a field RVA (initialization data) entry.
public IFieldRvaCloner FieldRvaCloner { get; set; }
Property Value
Methods
AddListener(IMemberClonerListener)
Adds a member cloner listener to the cloner.
public MemberCloner AddListener(IMemberClonerListener listener)
Parameters
listener
IMemberClonerListenerThe listener to add.
Returns
- MemberCloner
The metadata cloner that the listener is added to.
AddListener(Action<IMemberDefinition, IMemberDefinition>)
Adds a member cloner listener to the cloner.
public MemberCloner AddListener(Action<IMemberDefinition, IMemberDefinition> listener)
Parameters
listener
Action<IMemberDefinition, IMemberDefinition>The listener to add.
Returns
- MemberCloner
The metadata cloner that the listener is added to.
Clone()
Clones all included members.
public MemberCloneResult Clone()
Returns
- MemberCloneResult
An object representing the result of the cloning process.
Include(EventDefinition)
Adds a single event to the list of members to clone.
public MemberCloner Include(EventDefinition @event)
Parameters
event
EventDefinitionThe event to include.
Returns
- MemberCloner
The metadata cloner that the event is added to.
Include(EventDefinition, bool)
Adds a single event to the list of members to clone.
public MemberCloner Include(EventDefinition @event, bool recursive)
Parameters
event
EventDefinitionThe event to include.
recursive
boolIndicates the attached semantic methods (add, remove, fire) should be included.
Returns
- MemberCloner
The metadata cloner that the property is added to.
Include(FieldDefinition)
Adds a single field to the list of members to clone.
public MemberCloner Include(FieldDefinition field)
Parameters
field
FieldDefinitionThe field to include.
Returns
- MemberCloner
The metadata cloner that the field is added to.
Include(IMemberDefinition)
Adds the provided member definition to the list of members to clone.
public MemberCloner Include(IMemberDefinition member)
Parameters
member
IMemberDefinitionThe member to clone.
Returns
- MemberCloner
The metadata cloner that this member was added to.
Remarks
If member
refers to a TypeDefinition, all nested types will be included
as well.
Include(IMemberDefinition, bool)
Adds the provided member definition to the list of members to clone.
public MemberCloner Include(IMemberDefinition member, bool recursive)
Parameters
member
IMemberDefinitionThe member to clone.
recursive
boolIf
member
refers to a TypeDefinition, indicates whether all nested types should be included as well.
Returns
- MemberCloner
The metadata cloner that this member was added to.
Include(params IMemberDefinition[])
Adds each member in the provided collection of member.
public MemberCloner Include(params IMemberDefinition[] members)
Parameters
members
IMemberDefinition[]The members to include.
Returns
- MemberCloner
The metadata cloner that the members were added to.
Remarks
If a member in the list is a type, all their members and nested types will be included as well.
Include(MethodDefinition)
Adds a single method to the list of members to clone.
public MemberCloner Include(MethodDefinition method)
Parameters
method
MethodDefinitionThe method to include.
Returns
- MemberCloner
The metadata cloner that the method is added to.
Include(PropertyDefinition)
Adds a single property to the list of members to clone.
public MemberCloner Include(PropertyDefinition property)
Parameters
property
PropertyDefinitionThe property to include.
Returns
- MemberCloner
The metadata cloner that the property is added to.
Include(PropertyDefinition, bool)
Adds a single property to the list of members to clone.
public MemberCloner Include(PropertyDefinition property, bool recursive)
Parameters
property
PropertyDefinitionThe property to include.
recursive
boolIndicates the attached semantic methods (getters and setters) should be included.
Returns
- MemberCloner
The metadata cloner that the property is added to.
Include(TypeDefinition)
Adds the provided type, and all its members and nested types, to the list of members to clone.
public MemberCloner Include(TypeDefinition type)
Parameters
type
TypeDefinitionThe type to include.
Returns
- MemberCloner
The metadata cloner that this type was added to.
Include(TypeDefinition, bool)
Adds the provided type, and all its members, to the list of members to clone.
public MemberCloner Include(TypeDefinition type, bool recursive)
Parameters
type
TypeDefinitionThe type to include.
recursive
boolIndicates whether all nested types should be included as well.
Returns
- MemberCloner
The metadata cloner that this type was added to.
Include(params TypeDefinition[])
Adds each type in the provided collection of types, and all their members and nested types, to the list of members to clone.
public MemberCloner Include(params TypeDefinition[] types)
Parameters
types
TypeDefinition[]The types to include.
Returns
- MemberCloner
The metadata cloner that the types were added to.
Include(IEnumerable<IMemberDefinition>)
Adds each member in the provided collection of member.
public MemberCloner Include(IEnumerable<IMemberDefinition> members)
Parameters
members
IEnumerable<IMemberDefinition>The members to include.
Returns
- MemberCloner
The metadata cloner that the members were added to.
Remarks
If a member in the list is a type, all their members and nested types will be included as well.
Include(IEnumerable<TypeDefinition>)
Adds each type in the provided collection of types, and all their members and nested types, to the list of members to clone.
public MemberCloner Include(IEnumerable<TypeDefinition> types)
Parameters
types
IEnumerable<TypeDefinition>The types to include.
Returns
- MemberCloner
The metadata cloner that the types were added to.