2021-02-15 10:33:06 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
|
|
|
|
namespace RJW_Menstruation
|
|
|
|
|
{
|
|
|
|
|
public static class Reflector
|
|
|
|
|
{
|
|
|
|
|
public static object GetMemberValue(this Type type, string name)
|
|
|
|
|
{
|
|
|
|
|
BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
|
2021-02-17 14:20:49 +00:00
|
|
|
|
FieldInfo fieldInfo = type?.GetField(name, flags);
|
2021-02-15 10:33:06 +00:00
|
|
|
|
return fieldInfo?.GetValue(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static object GetMemberValue(this object obj, string name)
|
|
|
|
|
{
|
|
|
|
|
BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
2021-02-17 14:20:49 +00:00
|
|
|
|
FieldInfo fieldInfo = obj?.GetType().GetField(name, flags);
|
2021-02-15 10:33:06 +00:00
|
|
|
|
return fieldInfo?.GetValue(obj);
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-16 12:53:52 +00:00
|
|
|
|
public static object GetPropertyValue(this Type type, string name)
|
|
|
|
|
{
|
|
|
|
|
BindingFlags flags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
|
|
|
|
PropertyInfo propertyInfo = type?.GetProperty(name,flags);
|
|
|
|
|
return propertyInfo?.GetValue(null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static object GetPropertyValue(this object obj, string name)
|
|
|
|
|
{
|
|
|
|
|
BindingFlags flags = BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
|
|
|
|
PropertyInfo propertyInfo = obj?.GetType().GetProperty(name,flags);
|
|
|
|
|
return propertyInfo?.GetValue(obj);
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-15 10:33:06 +00:00
|
|
|
|
public static void SetMemberValue(this Type type, string name, object value)
|
|
|
|
|
{
|
|
|
|
|
BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
|
|
|
|
|
FieldInfo fieldInfo = type?.GetField(name, flags);
|
|
|
|
|
if (fieldInfo != null)
|
|
|
|
|
{
|
|
|
|
|
fieldInfo.SetValue(null, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void SetMemberValue(this object obj, string name, object value)
|
|
|
|
|
{
|
|
|
|
|
BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
|
|
|
|
|
FieldInfo fieldInfo = obj?.GetType().GetField(name, flags);
|
|
|
|
|
if (fieldInfo != null)
|
|
|
|
|
{
|
|
|
|
|
fieldInfo.SetValue(obj, value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-17 14:20:49 +00:00
|
|
|
|
|
2021-02-15 10:33:06 +00:00
|
|
|
|
}
|
|
|
|
|
}
|