reflectionhelper.cs

来自「破解的飞信源代码」· CS 代码 · 共 56 行

CS
56
字号
namespace Imps.Utils
{
    using System;
    using System.Reflection;

    public static class ReflectionHelper
    {
        public static void ClearAllEvents(object objectHasEvents)
        {
            if (objectHasEvents != null)
            {
                EventInfo[] events = objectHasEvents.GetType().GetEvents(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
                if ((events != null) && (events.Length >= 1))
                {
                    for (int i = 0; i < events.Length; i++)
                    {
                        try
                        {
                            EventInfo info = events[i];
                            FieldInfo field = info.DeclaringType.GetField(info.Name, BindingFlags.NonPublic | BindingFlags.Instance);
                            if (field != null)
                            {
                                field.SetValue(objectHasEvents, null);
                            }
                        }
                        catch
                        {
                        }
                    }
                }
            }
        }

        public static T GetDefaultValue<T>()
        {
            T objA = default(T);
            if (object.Equals(objA, null))
            {
                Type type = typeof(T);
                FieldInfo field = type.GetField("Empty", BindingFlags.GetField | BindingFlags.Public | BindingFlags.Static);
                if ((field != null) && (field.FieldType == type))
                {
                    return (T) field.GetValue(null);
                }
                ConstructorInfo constructor = type.GetConstructor(Type.EmptyTypes);
                if (constructor != null)
                {
                    objA = (T) constructor.Invoke(null);
                }
            }
            return objA;
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?