using System; using dnlib.DotNet; namespace Confuser.Core.Project.Patterns { /// /// A function that indicate whether the type inherits from the specified type. /// public class InheritsFunction : PatternFunction { internal const string FnName = "inherits"; /// public override string Name { get { return FnName; } } /// public override int ArgumentCount { get { return 1; } } /// public override object Evaluate(IDnlibDef definition) { string name = Arguments[0].Evaluate(definition).ToString(); var type = definition as TypeDef; if (type == null && definition is IMemberDef) type = ((IMemberDef)definition).DeclaringType; if (type == null) return false; if (type.InheritsFrom(name) || type.Implements(name)) return true; return false; } } }