Show / Hide Table of Contents

Class ReflectionUtilities

Contains many utility functions for reflection

Inheritance
object
ReflectionUtilities
Namespace: WeaverCore.Utilities
Assembly: WeaverCore.dll
Syntax
public static class ReflectionUtilities

Methods

| Edit this page View Source

CreateFieldGetter<SourceType, FieldType>(FieldInfo)

Creates a function that retrives a field value

Declaration
public static Func<SourceType, FieldType> CreateFieldGetter<SourceType, FieldType>(FieldInfo field)
Parameters
Type Name Description
FieldInfo field

The field to create a getter for

Returns
Type Description
Func<SourceType, FieldType>

Returns a function that when invoked, will retrieve the field value

Type Parameters
Name Description
SourceType

The type that contains the field

FieldType

The type of the field

| Edit this page View Source

CreateFieldGetter<SourceType, FieldType>(string, BindingFlags)

Creates a function that retrives a field value

Declaration
public static Func<SourceType, FieldType> CreateFieldGetter<SourceType, FieldType>(string fieldName, BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
string fieldName

The name of the field to create a getter for

BindingFlags flags

The binding flags used to find the field

Returns
Type Description
Func<SourceType, FieldType>

Returns a function that when invoked, will retrieve the field value

Type Parameters
Name Description
SourceType

The type that contains the field

FieldType

The type of the field

| Edit this page View Source

CreateFieldSetter<SourceType, FieldType>(FieldInfo)

Creates a funciton that sets a field value

Declaration
public static Action<SourceType, FieldType> CreateFieldSetter<SourceType, FieldType>(FieldInfo field)
Parameters
Type Name Description
FieldInfo field

The field to create a setter for

Returns
Type Description
Action<SourceType, FieldType>

Returns a function that when invoked, will set the field value

Type Parameters
Name Description
SourceType

The type that contains the field

FieldType

The type of the field

| Edit this page View Source

CreateFieldSetter<SourceType, FieldType>(string, BindingFlags)

Creates a funciton that sets a field value

Declaration
public static Action<SourceType, FieldType> CreateFieldSetter<SourceType, FieldType>(string fieldName, BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
string fieldName

The name of the field to create a setter for

BindingFlags flags

The binding flags used to find the field

Returns
Type Description
Action<SourceType, FieldType>

Returns a function that when invoked, will set the field value

Type Parameters
Name Description
SourceType

The type that contains the field

FieldType

The type of the field

| Edit this page View Source

ExecuteMethodsWithAttribute<AttriType>(Func<MethodInfo, AttriType, bool>, BindingFlags, bool)

Finds all methods that have a certain attribute type applied to them, and executes them

Declaration
public static void ExecuteMethodsWithAttribute<AttriType>(Func<MethodInfo, AttriType, bool> ExecuteIf = null, BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, bool throwOnError = false) where AttriType : Attribute
Parameters
Type Name Description
Func<MethodInfo, AttriType, bool> ExecuteIf

If a delegate is specified here, then only the methods that satify this delegate will be executed

BindingFlags flags

The binding flags to determine what kind of methods to find

bool throwOnError

Should an exception be thrown if a method fails?

Type Parameters
Name Description
AttriType

The type attribute to look for

| Edit this page View Source

ExecuteMethodsWithAttribute<AttriType>(Assembly, Func<MethodInfo, AttriType, bool>, BindingFlags, bool)

Finds all methods in an assembly that have a certain attribute type applied to them, and executes them

Declaration
public static void ExecuteMethodsWithAttribute<AttriType>(Assembly assembly, Func<MethodInfo, AttriType, bool> ExecuteIf = null, BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, bool throwOnError = false) where AttriType : Attribute
Parameters
Type Name Description
Assembly assembly

The assembly to look for the methods under

Func<MethodInfo, AttriType, bool> ExecuteIf

If a delegate is specified here, then only the methods that satify this delegate will be executed

BindingFlags flags

The binding flags to determine what kind of methods to find

bool throwOnError

Should an exception be thrown if a method fails?

Type Parameters
Name Description
AttriType

The type attribute to look for

| Edit this page View Source

FindLoadedAssembly(string)

Finds a loaded assembly by its full name or simple name.

Declaration
public static Assembly FindLoadedAssembly(string assemblyName)
Parameters
Type Name Description
string assemblyName

The full name or simple name of the assembly.

Returns
Type Description
Assembly

The loaded assembly or null if not found.

| Edit this page View Source

GetChildrenOfType(Type, bool)

Retrives all types that inherit from parentType

Declaration
public static IEnumerable<Type> GetChildrenOfType(Type parentType, bool includeAbstract = false)
Parameters
Type Name Description
Type parentType

The common base class to check for

bool includeAbstract

Should abstract classes also be included?

Returns
Type Description
IEnumerable<Type>

Returns a list of all types that inherit from parentType

| Edit this page View Source

GetChildrenOfType<T>(bool)

Retrives all types that inherit from type T

Declaration
public static IEnumerable<Type> GetChildrenOfType<T>(bool includeAbstract = false)
Parameters
Type Name Description
bool includeAbstract

Should abstract classes also be included?

Returns
Type Description
IEnumerable<Type>

Returns a list of all types that inherit from type T

Type Parameters
Name Description
T

The common base class to check for

| Edit this page View Source

GetMethod<InstanceType>(string, BindingFlags)

Finds a method on a given type and returns a MethodInfo object for it

Declaration
public static MethodInfo GetMethod<InstanceType>(string methodName, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
string methodName

The name of the method to find

BindingFlags flags

The binding flags to find the method with

Returns
Type Description
MethodInfo

Returns a method info object for the fmound method

Type Parameters
Name Description
InstanceType

The instance type to find the method under

| Edit this page View Source

GetMethodsWithAttribute<AttriType>(Assembly, BindingFlags)

Finds all methods in an assembly that have a certain attribute type applied to them

Declaration
public static IEnumerable<(MethodInfo method, AttriType attribute)> GetMethodsWithAttribute<AttriType>(Assembly assembly, BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) where AttriType : Attribute
Parameters
Type Name Description
Assembly assembly

The assembly to look for the methods under

BindingFlags flags

The binding flags to determine what kind of methods to find

Returns
Type Description
IEnumerable<(MethodInfo method, AttriType attribute)>

Returns all methods in the assembly with the specified attribute type applied to them

Type Parameters
Name Description
AttriType

The type attribute to look for

| Edit this page View Source

GetMethodsWithAttribute<AttriType>(Assembly, Type[], BindingFlags)

Finds all methods in an assembly that have a certain attribute type applied to them and accept certain parameters

Declaration
public static IEnumerable<(MethodInfo, AttriType)> GetMethodsWithAttribute<AttriType>(Assembly assembly, Type[] paramTypes, BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) where AttriType : Attribute
Parameters
Type Name Description
Assembly assembly

The assembly to look for the methods under

Type[] paramTypes

The type of parameters that the methods must have

BindingFlags flags

The binding flags to determine what kind of methods to find

Returns
Type Description
IEnumerable<(MethodInfo method, AttriType attribute)>

Returns all methods with the specified attribute type applied to them

Type Parameters
Name Description
AttriType

The type attribute to look for

| Edit this page View Source

GetMethodsWithAttribute<AttriType>(BindingFlags)

Finds all methods that have a certain attribute type applied to them

Declaration
public static IEnumerable<(MethodInfo method, AttriType attribute)> GetMethodsWithAttribute<AttriType>(BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) where AttriType : Attribute
Parameters
Type Name Description
BindingFlags flags

The binding flags to determine what kind of methods to find

Returns
Type Description
IEnumerable<(MethodInfo method, AttriType attribute)>

Returns all methods with the specified attribute type applied to them

Type Parameters
Name Description
AttriType

The type attribute to look for

| Edit this page View Source

GetMethodsWithAttribute<AttriType>(Type[], BindingFlags)

Finds all methods that have a certain attribute type applied to them and accept certain parameters

Declaration
public static IEnumerable<(MethodInfo method, AttriType attribute)> GetMethodsWithAttribute<AttriType>(Type[] paramTypes, BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) where AttriType : Attribute
Parameters
Type Name Description
Type[] paramTypes

The type of parameters that the methods must have

BindingFlags flags

The binding flags to determine what kind of methods to find

Returns
Type Description
IEnumerable<(MethodInfo method, AttriType attribute)>

Returns all methods with the specified attribute type applied to them

Type Parameters
Name Description
AttriType

The type attribute to look for

| Edit this page View Source

GetObjectsOfType<T>(bool)

Retrieves all types that inherit from type T, and create instances of each of them

Declaration
public static IEnumerable<T> GetObjectsOfType<T>(bool throwOnFailure = false)
Parameters
Type Name Description
bool throwOnFailure

If an object fails to instantiate, should an exception be thrown? If false, that object will be skipped over

Returns
Type Description
IEnumerable<T>

Returns a list of all objects that inherit from type T

Type Parameters
Name Description
T

The common base class to check for

| Edit this page View Source

MethodToDelegate<DelegateType>(MethodInfo)

Converts a MethodInfo object into a callable delegate

Declaration
public static DelegateType MethodToDelegate<DelegateType>(MethodInfo method)
Parameters
Type Name Description
MethodInfo method

The method info

Returns
Type Description
DelegateType

The delegate that will call the method

Type Parameters
Name Description
DelegateType

The delegate type to convert type

| Edit this page View Source

MethodToDelegate<DelegateType>(MethodInfo, object)

Converts a MethodInfo object into a callable delegate

Declaration
public static DelegateType MethodToDelegate<DelegateType>(MethodInfo method, object instance)
Parameters
Type Name Description
MethodInfo method

The method info

object instance

The object instance that the method is bound to

Returns
Type Description
DelegateType

The delegate that will call the method

Type Parameters
Name Description
DelegateType

The delegate type to convert type

| Edit this page View Source

MethodToDelegate<DelegateType, InstanceType>(string, BindingFlags)

Converts a MethodInfo object into a callable delegate

Declaration
public static DelegateType MethodToDelegate<DelegateType, InstanceType>(string methodName, BindingFlags Flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
string methodName

The name of the method

BindingFlags Flags

The binding flags used to find the method on the object

Returns
Type Description
DelegateType

The delegate that will call the method

Type Parameters
Name Description
DelegateType

The delegate type to convert type

InstanceType

The instance type the method is bound to

| Edit this page View Source

MethodToDelegate<DelegateType, InstanceType>(string, InstanceType, BindingFlags)

Converts a MethodInfo object into a callable delegate

Declaration
public static DelegateType MethodToDelegate<DelegateType, InstanceType>(string methodName, InstanceType instance, BindingFlags Flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
string methodName

The name of the method

InstanceType instance

The instance object the method is bound to

BindingFlags Flags

The binding flags used to find the method on the object

Returns
Type Description
DelegateType

The delegate that will call the method

Type Parameters
Name Description
DelegateType

The delegate type to convert type

InstanceType

The instance type the method is bound to

| Edit this page View Source

ReflectCallMethod(object, string, object[], BindingFlags)

Calls a method using reflection.

Declaration
public static object ReflectCallMethod(this object obj, string methodName, object[] parameters = null, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
object obj

The object containing the method.

string methodName

The name of the method.

object[] parameters

An array of parameters to pass to the method.

BindingFlags flags

Binding flags for reflection (default is Static, NonPublic, Public, Instance).

Returns
Type Description
object

The result of the method invocation.

| Edit this page View Source

ReflectGetField(object, string, BindingFlags)

Gets the value of a field using reflection.

Declaration
public static object ReflectGetField(this object obj, string fieldName, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
object obj

The object containing the field.

string fieldName

The name of the field.

BindingFlags flags

Binding flags for reflection (default is Static, NonPublic, Public, Instance).

Returns
Type Description
object

The value of the specified field.

| Edit this page View Source

ReflectGetMethod(object, string, BindingFlags)

Gets the MethodInfo object for a method using reflection.

Declaration
public static MethodInfo ReflectGetMethod(this object obj, string methodName, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
object obj

The object containing the method.

string methodName

The name of the method.

BindingFlags flags

Binding flags for reflection (default is Static, NonPublic, Public, Instance).

Returns
Type Description
MethodInfo

The MethodInfo object for the specified method.

| Edit this page View Source

ReflectGetProperty(object, string, BindingFlags)

Gets the value of a property using reflection.

Declaration
public static object ReflectGetProperty(this object obj, string propertyName, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
object obj

The object containing the property.

string propertyName

The name of the property.

BindingFlags flags

Binding flags for reflection (default is Static, NonPublic, Public, Instance).

Returns
Type Description
object

The value of the specified property.

| Edit this page View Source

ReflectSetField(object, string, object, BindingFlags)

Sets the value of a field using reflection.

Declaration
public static void ReflectSetField(this object obj, string fieldName, object value, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
object obj

The object containing the field.

string fieldName

The name of the field.

object value

The value to set.

BindingFlags flags

Binding flags for reflection (default is Static, NonPublic, Public, Instance).

| Edit this page View Source

ReflectSetProperty(object, string, object, BindingFlags)

Sets the value of a property using reflection.

Declaration
public static bool ReflectSetProperty(this object obj, string propertyName, object value, BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
Parameters
Type Name Description
object obj

The object containing the property.

string propertyName

The name of the property.

object value

The value to set.

BindingFlags flags

Binding flags for reflection (default is Static, NonPublic, Public, Instance).

Returns
Type Description
bool

True if the property was successfully set; otherwise, false.

  • Edit this page
  • View Source
☀
☾
In this article
Back to top
Generated by DocFX
☀
☾