Taylohtio/CustomTelerikField/CustomTelerikField/ReflectionHelper.cs

58 lines
3.0 KiB
C#

using System;
using System.Reflection;
namespace Taloyhtio.CustomTelerikField
{
public static class ReflectionHelper
{
// public static object CallMethod(object obj, string name, params object[] argv)
// {
// BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
// MethodInfo mi = obj.GetType().BaseType.FindMembers(MemberTypes.Method, bf, Type.FilterName, name)[0] as MethodInfo;
// return mi.Invoke(obj, argv);
// }
public static object CallMethod(object obj, Type type, string name, params object[] argv)
{
BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
MethodInfo mi = type.FindMembers(MemberTypes.Method, bf, Type.FilterName, name)[0] as MethodInfo;
return mi.Invoke(obj, argv);
}
// public static object GetFieldValue(object obj, string name)
// {
// BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
// FieldInfo fi = obj.GetType().BaseType.FindMembers(MemberTypes.Field, bf, Type.FilterName, name)[0] as FieldInfo;
// return fi.GetValue(obj);
// }
public static object GetFieldValue(object obj, Type type, string name)
{
BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
FieldInfo fi = type.FindMembers(MemberTypes.Field, bf, Type.FilterName, name)[0] as FieldInfo;
return fi.GetValue(obj);
}
// public static void SetFieldValue(object obj, string name, object value)
// {
// BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
// FieldInfo fi = obj.GetType().BaseType.BaseType.BaseType.FindMembers(MemberTypes.Field, bf, Type.FilterName, name)[0] as FieldInfo;
// fi.SetValue(obj, value);
// }
public static void SetFieldValue(object obj, Type type, string name, object value)
{
BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
FieldInfo fi = type.FindMembers(MemberTypes.Field, bf, Type.FilterName, name)[0] as FieldInfo;
fi.SetValue(obj, value);
}
// public static object CallStaticMethod(Type t, string name, params object[] argv)
// {
// BindingFlags bf = 0 | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
// MethodInfo mi = t.FindMembers(MemberTypes.Method, bf, Type.FilterName, name)[0] as MethodInfo;
// return mi.Invoke(null, argv);
// }
}
}