Class ReflectionUtils
Inheritance
System.Object
ReflectionUtils
Assembly: Eco.Shared.dll
Syntax
public static class ReflectionUtils : Object
Fields
DeclaredOnlyLookup
Declaration
public const BindingFlags DeclaredOnlyLookup
Field Value
| Type |
Description |
| System.Reflection.BindingFlags |
|
HierarchyBinding
Declaration
public const BindingFlags HierarchyBinding
Field Value
| Type |
Description |
| System.Reflection.BindingFlags |
|
HierarchyBindingWithStatic
Declaration
public const BindingFlags HierarchyBindingWithStatic
Field Value
| Type |
Description |
| System.Reflection.BindingFlags |
|
LocalBinding
Declaration
public const BindingFlags LocalBinding
Field Value
| Type |
Description |
| System.Reflection.BindingFlags |
|
LocalStaticBinding
Declaration
public const BindingFlags LocalStaticBinding
Field Value
| Type |
Description |
| System.Reflection.BindingFlags |
|
Methods
AllMembers(Type, Boolean)
Gets all properties, methods, and extension methods. Operates either on instance members or static members based on passed bool.
Declaration
public static IEnumerable<MemberInfo> AllMembers(this Type type, bool instanceMembers = true)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Boolean |
instanceMembers |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> |
|
Attribute(MemberInfo, Type, Boolean)
Declaration
public static Attribute Attribute(this MemberInfo member, Type type, bool inherit = true)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Type |
type |
|
| System.Boolean |
inherit |
|
Returns
| Type |
Description |
| System.Attribute |
|
Attribute<T>(MemberInfo, Boolean)
Returns first attribute of type T if exists, otherwise null.
Declaration
public static T Attribute<T>(this MemberInfo member, bool inherit = true)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Boolean |
inherit |
|
Returns
Type Parameters
AttributeIncludingInterfaces<T>(MemberInfo)
Declaration
public static T AttributeIncludingInterfaces<T>(this MemberInfo member)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
Returns
Type Parameters
Attributes<T>(MemberInfo, Boolean)
Declaration
public static IEnumerable<T> Attributes<T>(this MemberInfo member, bool inherit = true)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Boolean |
inherit |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<T> |
|
Type Parameters
BasestOrDefault(Type, Func<Type, Boolean>)
Returns basest type in hierarchy matching predicate. All types higher in hierarchy also should match the predicate.
Usually may be used to find a base type which first implements an interface:
type.BasestOrDefault(t => typeof(IController).IsAssignableFrom(t)).
Declaration
public static Type BasestOrDefault(this Type type, Func<Type, bool> predicate)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Func<System.Type, System.Boolean> |
predicate |
|
Returns
| Type |
Description |
| System.Type |
|
BlendProperties(ICloneable, ICloneable, Single)
Clones source, then assigns all int and float values a lerped-value relative to 'target'
Declaration
public static object BlendProperties(ICloneable source, ICloneable target, float lerp)
Parameters
| Type |
Name |
Description |
| System.ICloneable |
source |
|
| System.ICloneable |
target |
|
| System.Single |
lerp |
|
Returns
| Type |
Description |
| System.Object |
|
CallStatic(Type, String, Object[])
Call a static function on the given type.
Declaration
public static void CallStatic(this Type type, string name, params object[] p)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
name |
|
| System.Object[] |
p |
|
CallStatic<T>(Type, String, Object[])
Call a static with an expected return type T
Declaration
public static T CallStatic<T>(this Type type, string name, params object[] p)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
name |
|
| System.Object[] |
p |
|
Returns
Type Parameters
CanAccess(Assembly, FieldInfo)
Checks if field may be accessed (without reflection) from assembly.
It is possible in 3 cases:
- field is "public";
- field declared in the assembly;
- field declared as "protected" or "protected internal" and field's owning type is in the assembly;
It currently doesn't support intermediate types through inheritance, i.e. in A (Assembly 1) : B (Assembly 2) : C (Assembly 3) if you check for Assembly 2 for A.field
which is declared as protected in C then it will return false. Adding this check will make logic more complex and doesn't have practical usage for now.
Declaration
public static bool CanAccess(this Assembly assembly, FieldInfo field)
Parameters
| Type |
Name |
Description |
| System.Reflection.Assembly |
assembly |
|
| System.Reflection.FieldInfo |
field |
|
Returns
| Type |
Description |
| System.Boolean |
|
CanAccess(Assembly, MethodInfo)
Checks if method may be accessed (without reflection) from assembly.
It is possible in 3 cases:
method is "public";
method declared in the assembly;
method declared as "protected" or "protected internal" and method's owning type is in the assembly;
It currently doesn't support intermediate types through inheritance, i.e. in A (Assembly 1) : B (Assembly 2) : C (Assembly 3) if you check for Assembly 2 for A.Method
which is declared as protected in C then it will return false. Adding this check will make logic more complex and doesn't have practical usage for now.
Declaration
public static bool CanAccess(this Assembly assembly, MethodInfo method)
Parameters
| Type |
Name |
Description |
| System.Reflection.Assembly |
assembly |
|
| System.Reflection.MethodInfo |
method |
|
Returns
| Type |
Description |
| System.Boolean |
|
ConcreteTypes(Type, Assembly, Boolean)
Declaration
public static IEnumerable<Type> ConcreteTypes(this Type baseType, Assembly assembly = null, bool includeSelf = false)
Parameters
| Type |
Name |
Description |
| System.Type |
baseType |
|
| System.Reflection.Assembly |
assembly |
|
| System.Boolean |
includeSelf |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
ConcreteTypesWithInteface(Type, IEnumerable<Assembly>)
Returns all types that implements interface interfaceType
Declaration
public static IEnumerable<Type> ConcreteTypesWithInteface(this Type interfaceType, IEnumerable<Assembly> assemblies = null)
Parameters
| Type |
Name |
Description |
| System.Type |
interfaceType |
|
| System.Collections.Generic.IEnumerable<System.Reflection.Assembly> |
assemblies |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
CreatableTypes(Type, Assembly, Boolean)
Returns types that derive from this type in the given assembly (or all assemblies if null), and optionally the passed type itself, if it's creatable.
Declaration
public static IEnumerable<Type> CreatableTypes(this Type baseType, Assembly assembly = null, bool includeSelf = false)
Parameters
| Type |
Name |
Description |
| System.Type |
baseType |
|
| System.Reflection.Assembly |
assembly |
|
| System.Boolean |
includeSelf |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
DeepAttributes(Type, Type)
Collects all attributes of 'attributeToScan' in typeToScan itself and its Fields, Properties and Methods
Declaration
public static List<(MemberInfo, object)> DeepAttributes(this Type typeToScan, Type attributeToScan)
Parameters
| Type |
Name |
Description |
| System.Type |
typeToScan |
|
| System.Type |
attributeToScan |
Attribute to scan for.
|
Returns
| Type |
Description |
| System.Collections.Generic.List<System.ValueTuple<System.Reflection.MemberInfo, System.Object>> |
Discovered MemberInfo and their attribute data.
|
DerivedTypes(IEnumerable<Assembly>, Type, Boolean)
Returns all derived types for baseType in assemblies optionally (if includeSelf set) returning the type itself.
Declaration
public static IEnumerable<Type> DerivedTypes(this IEnumerable<Assembly> assemblies, Type baseType, bool includeSelf = false)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.Assembly> |
assemblies |
|
| System.Type |
baseType |
|
| System.Boolean |
includeSelf |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
DerivedTypes(Type, Assembly, Boolean)
Returns all derived types for baseType optionally in specific assembly and optionally (if includeSelf set) returning the type itself.
Declaration
public static IEnumerable<Type> DerivedTypes(this Type baseType, Assembly assembly = null, bool includeSelf = false)
Parameters
| Type |
Name |
Description |
| System.Type |
baseType |
|
| System.Reflection.Assembly |
assembly |
|
| System.Boolean |
includeSelf |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
DerivedTypes<T>(IEnumerable<Assembly>, Boolean)
Declaration
public static IEnumerable<Type> DerivedTypes<T>(this IEnumerable<Assembly> assemblies, bool includeSelf = false)
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.Assembly> |
assemblies |
|
| System.Boolean |
includeSelf |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
Type Parameters
DerivesFrom(Type, Type)
Declaration
public static bool DerivesFrom(this Type derivedType, Type baseType)
Parameters
| Type |
Name |
Description |
| System.Type |
derivedType |
|
| System.Type |
baseType |
|
Returns
| Type |
Description |
| System.Boolean |
|
DerivesFrom<TBase>(Type)
Declaration
public static bool DerivesFrom<TBase>(this Type derivedType)
Parameters
| Type |
Name |
Description |
| System.Type |
derivedType |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
ForEachMemberWithAttribute<T>(Type, Boolean, Action<MemberInfo, T>)
Execute action for every member of type that has argument of type T.
Declaration
public static void ForEachMemberWithAttribute<T>(this Type type, bool includeExtensions, Action<MemberInfo, T> action)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Boolean |
includeExtensions |
Should extension methods be included?
|
| System.Action<System.Reflection.MemberInfo, T> |
action |
|
Type Parameters
GenericTypeImplementations(Type, Assembly)
Returns all compile time implementations of genericTypeDefinition.
Declaration
public static IEnumerable<Type> GenericTypeImplementations(this Type genericTypeDefinition, Assembly assembly)
Parameters
| Type |
Name |
Description |
| System.Type |
genericTypeDefinition |
|
| System.Reflection.Assembly |
assembly |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
GetAllMembers(Type, BindingFlags)
Get the properties on this type, and all properties in interface hierarchies it implements.
Declaration
public static IEnumerable<MemberInfo> GetAllMembers(this Type type, BindingFlags flags)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Reflection.BindingFlags |
flags |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> |
|
GetDefaultValue(Type)
Returns default value for type.
Declaration
public static object GetDefaultValue(Type type)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
Returns
| Type |
Description |
| System.Object |
Same as default(T) via reflection.
|
GetEnumerableType(IEnumerable)
Declaration
public static Type GetEnumerableType(this IEnumerable enumeration)
Parameters
| Type |
Name |
Description |
| System.Collections.IEnumerable |
enumeration |
|
Returns
| Type |
Description |
| System.Type |
|
GetMatchingMethod(MethodInfo, Type)
Returns method with same name and arguments in type (looking into declared members only). Returns null if such method not found.
Declaration
public static MethodInfo GetMatchingMethod(this MethodInfo methodInfoInTypeDefinition, Type type)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfoInTypeDefinition |
|
| System.Type |
type |
|
Returns
| Type |
Description |
| System.Reflection.MethodInfo |
|
GetMemberFromAll(Type, String, BindingFlags)
Get a member from a given type, and include all the sub interfaces too, which usually arent included with default GetMember.
Declaration
public static MemberInfo GetMemberFromAll(this Type type, string name, BindingFlags flags)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
name |
|
| System.Reflection.BindingFlags |
flags |
|
Returns
| Type |
Description |
| System.Reflection.MemberInfo |
|
GetMethodRealType(MethodInfo)
If the method is an extended one we get the extension type else we just get the method declaring type.
Declaration
public static Type GetMethodRealType(this MethodInfo methodInfo)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfo |
|
Returns
| Type |
Description |
| System.Type |
|
GetPropertyValueByName<T>(Object, String)
Declaration
public static T GetPropertyValueByName<T>(this object obj, string name)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| System.String |
name |
|
Returns
Type Parameters
GetPublicProperties(Type, BindingFlags)
Get the properties on this type, and all properties in interface hierarchies it implements.
Declaration
public static IEnumerable<PropertyInfo> GetPublicProperties(this Type type, BindingFlags flags)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Reflection.BindingFlags |
flags |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.PropertyInfo> |
|
GetSimpleName(MemberInfo)
Returns simple name (without explicit interface specification). I.e. Eco.Core.Systems.IRegistrar.IdToObj => IdToObj.
Declaration
public static string GetSimpleName(this MemberInfo member)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
Returns
| Type |
Description |
| System.String |
|
GetSimpleName(String)
Returns simple name (without explicit interface specification). I.e. Eco.Core.Systems.IRegistrar.IdToObj => IdToObj.
Declaration
public static string GetSimpleName(string name)
Parameters
| Type |
Name |
Description |
| System.String |
name |
|
Returns
| Type |
Description |
| System.String |
|
GetStaticFieldValue<T>(Type, String)
Returns value of static field on type.
Declaration
public static T GetStaticFieldValue<T>(this Type type, string fieldName)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
fieldName |
|
Returns
Type Parameters
GetStaticFieldValue<TType, TFieldType>(String)
Returns value of static field on TType.
Declaration
public static TFieldType GetStaticFieldValue<TType, TFieldType>(string fieldName)
Parameters
| Type |
Name |
Description |
| System.String |
fieldName |
|
Returns
| Type |
Description |
| TFieldType |
|
Type Parameters
| Name |
Description |
| TType |
|
| TFieldType |
|
GetStringPropertyByName(Object, String)
Declaration
public static string GetStringPropertyByName(this object obj, string name)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| System.String |
name |
|
Returns
| Type |
Description |
| System.String |
|
GetStructPropertyByName<T>(Object, String)
Declaration
public static T GetStructPropertyByName<T>(this object obj, string name)
where T : struct, ValueType
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| System.String |
name |
|
Returns
Type Parameters
GetTypeByGenericTypeDefinitionInHierarchy(Type, Type)
Returns (if exists) type corresponding to genericTypeDefinition in type hierarchy. I.e. if when check for List{}: List{string} -> List{string}, IntList : List{int} -> List{int}.
Declaration
public static Type GetTypeByGenericTypeDefinitionInHierarchy(this Type type, Type genericTypeDefinition)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Type |
genericTypeDefinition |
|
Returns
| Type |
Description |
| System.Type |
|
GetTypeFromFullName(String)
Declaration
public static Type GetTypeFromFullName(string typeName)
Parameters
| Type |
Name |
Description |
| System.String |
typeName |
|
Returns
| Type |
Description |
| System.Type |
|
GetTypeMemberInfo(Type, BindingFlags)
Declaration
public static IEnumerable<MemberInfo> GetTypeMemberInfo(this Type typeToScan, BindingFlags flags)
Parameters
| Type |
Name |
Description |
| System.Type |
typeToScan |
|
| System.Reflection.BindingFlags |
flags |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.MemberInfo> |
|
GetTypesWithAttribute<T>(Boolean)
Declaration
public static IEnumerable<Type> GetTypesWithAttribute<T>(bool inherited)
Parameters
| Type |
Name |
Description |
| System.Boolean |
inherited |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
|
Type Parameters
GetTypesWithAttribute<T>(Assembly)
Returns all types in the assembly with the attribute,
Declaration
public static IEnumerable<Type> GetTypesWithAttribute<T>(this Assembly assembly)
Parameters
| Type |
Name |
Description |
| System.Reflection.Assembly |
assembly |
Assembly to check,
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Type> |
System.Collections.Generic.IEnumerable<> containing all the found types.
|
Type Parameters
| Name |
Description |
| T |
Attribute to find,
|
HasAnyAttribute(MemberInfo, Type[])
Declaration
public static bool HasAnyAttribute(this MemberInfo member, params Type[] attributes)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Type[] |
attributes |
|
Returns
| Type |
Description |
| System.Boolean |
|
HasAttribute<T>(MemberInfo, Boolean)
Declaration
public static bool HasAttribute<T>(this MemberInfo member, bool inherit = true)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Boolean |
inherit |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
HasAttribute<T>(MemberInfo, Func<T, Boolean>, Boolean)
Declaration
public static bool HasAttribute<T>(this MemberInfo member, Func<T, bool> predicate, bool inherit = true)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Func<T, System.Boolean> |
predicate |
|
| System.Boolean |
inherit |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
HasAttributeIncludingInterfaces<T>(PropertyInfo)
Checks if property has attribute T or any of interfaces declaring same property has the attribute.
Declaration
public static bool HasAttributeIncludingInterfaces<T>(this PropertyInfo property)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.PropertyInfo |
property |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
HasDefaultConstructor(Type)
Declaration
public static bool HasDefaultConstructor(this Type t)
Parameters
| Type |
Name |
Description |
| System.Type |
t |
|
Returns
| Type |
Description |
| System.Boolean |
|
HasGenericParameters(Type)
Checks if type has any generic parameters. I.e. when generic type used as based it isn't more generic type definition, but still has generic parameters in it's definition (i.e. base class for StringKeyDictionary{TValue} : Dictionary{string, TValue}).
Declaration
public static bool HasGenericParameters(this Type type)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
Returns
| Type |
Description |
| System.Boolean |
|
InNamespace(Type, String)
Checks if type in namespace (same or nested).
Declaration
public static bool InNamespace(this Type type, string namespace)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
namespace |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsAnonymous(Action)
Declaration
public static bool IsAnonymous(this Action action)
Parameters
| Type |
Name |
Description |
| System.Action |
action |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsBackingField(FieldInfo)
Checks if fieldInfo is backing field (for auto-property).
Declaration
public static bool IsBackingField(this FieldInfo fieldInfo)
Parameters
| Type |
Name |
Description |
| System.Reflection.FieldInfo |
fieldInfo |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsExtension(MethodInfo)
Checks if methodInfo is an extension method.
Declaration
public static bool IsExtension(this MethodInfo methodInfo)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfo |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsGenericTypeConstructedFrom(Type, Type)
Checks if genericType is a generic type constructed from genericTypeDefinition.
Declaration
public static bool IsGenericTypeConstructedFrom(this Type genericType, Type genericTypeDefinition)
Parameters
| Type |
Name |
Description |
| System.Type |
genericType |
|
| System.Type |
genericTypeDefinition |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsHidden(Type)
Declaration
public static bool IsHidden(this Type t)
Parameters
| Type |
Name |
Description |
| System.Type |
t |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsInheritFromGenericTypeDefinition(Type, Type)
Checks if any base class is generic type from generic type definition.
Declaration
public static bool IsInheritFromGenericTypeDefinition(this Type type, Type genericTypeDefinition)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Type |
genericTypeDefinition |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsOverride(MethodInfo)
Checks if methodInfo is an method override.
Declaration
public static bool IsOverride(this MethodInfo methodInfo)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfo |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsParentOf(Type, Type)
Declaration
public static bool IsParentOf(this Type baseType, Type derivedType)
Parameters
| Type |
Name |
Description |
| System.Type |
baseType |
|
| System.Type |
derivedType |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsParentOf<TDerived>(Type)
Declaration
public static bool IsParentOf<TDerived>(this Type baseType)
Parameters
| Type |
Name |
Description |
| System.Type |
baseType |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
| Name |
Description |
| TDerived |
|
IsSerialized(MemberInfo)
Check member is serialized, through SerializedAttribute, EcoAttribute or SerializedDerivedAttribute
Declaration
public static bool IsSerialized(this MemberInfo member)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
Returns
| Type |
Description |
| System.Boolean |
|
IsSerializedTypeName(MemberInfo)
Declaration
public static bool IsSerializedTypeName(this MemberInfo member)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
Returns
| Type |
Description |
| System.Boolean |
|
MembersWithAttribute<T>(Type, Boolean)
Returns all public instance and static members that have the passed attribute, including from parent classes.
Declaration
public static IEnumerable<(MemberInfo, T)> MembersWithAttribute<T>(this Type type, bool includeExtensions = true)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Boolean |
includeExtensions |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.ValueTuple<System.Reflection.MemberInfo, T>> |
|
Type Parameters
MethodsWithAttribute<T>(Type)
Declaration
public static IEnumerable<MethodInfo> MethodsWithAttribute<T>(this Type type)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.MethodInfo> |
|
Type Parameters
NameNoGeneric(MemberInfo)
Declaration
public static string NameNoGeneric(this MemberInfo info)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
info |
|
Returns
| Type |
Description |
| System.String |
|
NameNoGeneric(String)
Declaration
public static string NameNoGeneric(this string type)
Parameters
| Type |
Name |
Description |
| System.String |
type |
|
Returns
| Type |
Description |
| System.String |
|
NameNoGeneric(Type)
Declaration
public static string NameNoGeneric(this Type type)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
Returns
| Type |
Description |
| System.String |
|
PrepareCache(Type, Type)
Declaration
public static void PrepareCache(Type type, Type attributeType)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Type |
attributeType |
|
PropertyValue<T>(Object, PropertyInfo)
Returns a value of property converted to T.
Declaration
public static T PropertyValue<T>(this object obj, PropertyInfo property)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| System.Reflection.PropertyInfo |
property |
|
Returns
Type Parameters
ReflectionToString(StringBuilder, Object)
Add details on each of the properties and fields of the passed object.
Declaration
public static void ReflectionToString(StringBuilder sb, object obj)
Parameters
| Type |
Name |
Description |
| System.Text.StringBuilder |
sb |
|
| System.Object |
obj |
|
SetPropertyByName(Object, String, Object)
Declaration
public static bool SetPropertyByName(this object obj, string name, object value)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| System.String |
name |
|
| System.Object |
value |
|
Returns
| Type |
Description |
| System.Boolean |
|
TryCallStatic(Type, String, Object[])
Try to call a static method, doing nothing if it doesn't exist or is wrong signature.
Declaration
public static void TryCallStatic(this Type type, string name, params object[] p)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
name |
|
| System.Object[] |
p |
|
TryCallStatic<T>(Type, String, Object[])
Call a static function of the given name, triggering an error if it doesnt exist. T = return type
Declaration
public static T TryCallStatic<T>(this Type type, string name, params object[] p)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.String |
name |
|
| System.Object[] |
p |
|
Returns
Type Parameters
TryGetAttribute<T>(MemberInfo, Boolean, out T)
Declaration
public static bool TryGetAttribute<T>(this MemberInfo member, bool inherit, out T attr)
where T : Attribute
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Boolean |
inherit |
|
| T |
attr |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
TryGetExtensionType(MethodInfo, out Type)
Try to get the extension type of the method if it's an extended method else return false.
Declaration
public static bool TryGetExtensionType(this MethodInfo methodInfo, out Type type)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfo |
|
| System.Type |
type |
|
Returns
| Type |
Description |
| System.Boolean |
|
TryGetGenericInterface(Type, Type, out Type)
Tries to get genericInterface constructed from genericInterfaceDefinition implemented by type.
Declaration
public static bool TryGetGenericInterface(this Type type, Type genericInterfaceDefinition, out Type genericInterface)
Parameters
| Type |
Name |
Description |
| System.Type |
type |
|
| System.Type |
genericInterfaceDefinition |
|
| System.Type |
genericInterface |
|
Returns
| Type |
Description |
| System.Boolean |
|
TryGetMatchingInterfaceMethod(MethodInfo, Func<MethodInfo, Boolean>, out MethodInfo)
Tries to get first interface declaring methodInfo matching predicate.
Declaration
public static bool TryGetMatchingInterfaceMethod(MethodInfo methodInfo, Func<MethodInfo, bool> predicate, out MethodInfo interfaceMethodInfo)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfo |
|
| System.Func<System.Reflection.MethodInfo, System.Boolean> |
predicate |
|
| System.Reflection.MethodInfo |
interfaceMethodInfo |
|
Returns
| Type |
Description |
| System.Boolean |
|
TryGetMatchingMethodWithInheritance(MethodInfo, Func<MethodInfo, Boolean>, out MethodInfo)
Searches matching method starting from methodInfo and then fallback to base class and interfaces. I.e. may be used to find base method in non-generic type.
Declaration
public static bool TryGetMatchingMethodWithInheritance(MethodInfo methodInfo, Func<MethodInfo, bool> predicate, out MethodInfo matchingMethodInfo)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
methodInfo |
|
| System.Func<System.Reflection.MethodInfo, System.Boolean> |
predicate |
|
| System.Reflection.MethodInfo |
matchingMethodInfo |
|
Returns
| Type |
Description |
| System.Boolean |
|
TryGetPropertyValueByName<T>(Object, String, out T)
Try to get a property using reflection for the given name, and assign it to val, returning true if found.
Declaration
public static bool TryGetPropertyValueByName<T>(this object obj, string name, out T val)
Parameters
| Type |
Name |
Description |
| System.Object |
obj |
|
| System.String |
name |
|
| T |
val |
|
Returns
| Type |
Description |
| System.Boolean |
|
Type Parameters
Value(MemberInfo, Object, Object[])
Declaration
public static object Value(this MemberInfo member, object o, params object[] parameters)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Object |
o |
|
| System.Object[] |
parameters |
|
Returns
| Type |
Description |
| System.Object |
|
Value<T>(MemberInfo, Object, Object[])
Declaration
public static T Value<T>(this MemberInfo member, object o, params object[] parameters)
Parameters
| Type |
Name |
Description |
| System.Reflection.MemberInfo |
member |
|
| System.Object |
o |
|
| System.Object[] |
parameters |
|
Returns
Type Parameters
Value<T>(PropertyInfo, Object)
Returns a value of property converted to T.
Declaration
public static T Value<T>(this PropertyInfo property, object obj)
Parameters
| Type |
Name |
Description |
| System.Reflection.PropertyInfo |
property |
|
| System.Object |
obj |
|
Returns
Type Parameters
VerifySignature(MethodInfo, Type[])
Return true if the given method has the exact list of types in this order as its signature.
Declaration
public static bool VerifySignature(this MethodInfo method, params Type[] types)
Parameters
| Type |
Name |
Description |
| System.Reflection.MethodInfo |
method |
|
| System.Type[] |
types |
|
Returns
| Type |
Description |
| System.Boolean |
|
WithAttribute<TAttr>(IEnumerable<PropertyInfo>, Boolean)
Declaration
public static IEnumerable<PropertyInfo> WithAttribute<TAttr>(this IEnumerable<PropertyInfo> properties, bool inherit = true)
where TAttr : Attribute
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.PropertyInfo> |
properties |
|
| System.Boolean |
inherit |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<System.Reflection.PropertyInfo> |
|
Type Parameters
WithAttribute<TMember, TAttr>(IEnumerable<TMember>, Boolean)
Filters members to keep only members with TAttr attribute(s).
Declaration
public static IEnumerable<TMember> WithAttribute<TMember, TAttr>(this IEnumerable<TMember> members, bool inherit = true)
where TMember : MemberInfo where TAttr : Attribute
Parameters
| Type |
Name |
Description |
| System.Collections.Generic.IEnumerable<TMember> |
members |
|
| System.Boolean |
inherit |
|
Returns
| Type |
Description |
| System.Collections.Generic.IEnumerable<TMember> |
|
Type Parameters
| Name |
Description |
| TMember |
|
| TAttr |
|
ZipByProperty<T>(Object, Object, Object, Func<T, T, T>)
Goes over each assignable member of type T in the given object, gets the value in both 'object' and 'other', and calls the func to transform
them into the final value.
Declaration
public static void ZipByProperty<T>(this object target, object leftObj, object rightObj, Func<T, T, T> transformFunc)
where T : new()
Parameters
| Type |
Name |
Description |
| System.Object |
target |
The given object.
|
| System.Object |
leftObj |
The object providing the left value in the transformFunc
|
| System.Object |
rightObj |
The object providing the right value in the transformFunc
|
| System.Func<T, T, T> |
transformFunc |
The function that accepts the property from both left and right, and returns the value of the new one.
|
Type Parameters
| Name |
Description |
| T |
The parameter type of properties we're looking at.
|