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;
}
}
}