MethodAttributes MethodAttributesFor(TypeMember member)
{
var attributes = MethodVisibilityAttributesFor(member);
if (member.IsStatic)
{
attributes |= MethodAttributes.Static;
if (member.Name.StartsWith("op_"))
attributes |= MethodAttributes.SpecialName;
}
else if (member.IsAbstract)
attributes |= (MethodAttributes.Abstract | MethodAttributes.Virtual);
else if (member.IsVirtual || member.IsOverride)
{
attributes |= MethodAttributes.Virtual;
if (member.IsFinal)
attributes |= MethodAttributes.Final;
if (member.IsNew)
attributes |= MethodAttributes.NewSlot;
}
return attributes;
}