Пример #1
0
        void DeleteEmptyCctors()
        {
            var emptyCctorsToRemove = new List <MethodDef>();

            foreach (var type in module.GetTypes())
            {
                var cctor = type.FindStaticConstructor();
                if (cctor != null && DotNetUtils.IsEmpty(cctor))
                {
                    emptyCctorsToRemove.Add(cctor);
                }
            }

            if (emptyCctorsToRemove.Count == 0)
            {
                return;
            }

            Logger.v("Removing empty .cctor methods");
            Logger.Instance.Indent();
            foreach (var cctor in emptyCctorsToRemove)
            {
                var type = cctor.DeclaringType;
                if (type == null)
                {
                    continue;
                }
                if (type.Methods.Remove(cctor))
                {
                    Logger.v("{0:X8}, type: {1} ({2:X8})",
                             cctor.MDToken.ToUInt32(),
                             Utils.RemoveNewlines(type),
                             type.MDToken.ToUInt32());
                }
            }
            Logger.Instance.DeIndent();
        }