in src/Refasmer/Filters/AllowPublic.cs [6:57]
public class AllowPublic(bool omitNonApiMembers) : PartialTypeFilterBase(omitNonApiMembers)
{
public override bool AllowImport(TypeDefinition type, MetadataReader reader)
{
if (!base.AllowImport(type, reader)) return false;
if (!OmitNonApiMembers) return true;
switch (type.Attributes & TypeAttributes.VisibilityMask)
{
case TypeAttributes.Public:
return true;
case TypeAttributes.NestedPublic:
return AllowImport(reader.GetTypeDefinition(type.GetDeclaringType()), reader);
case TypeAttributes.NestedFamily:
case TypeAttributes.NestedFamORAssem:
var declaringType = reader.GetTypeDefinition(type.GetDeclaringType());
return (declaringType.Attributes & TypeAttributes.Sealed) == 0 && AllowImport(declaringType, reader);
default:
return false;
}
}
public override bool AllowImport( MethodDefinition method, MetadataReader reader )
{
switch (method.Attributes & MethodAttributes.MemberAccessMask)
{
case MethodAttributes.Public:
return true;
case MethodAttributes.Family:
case MethodAttributes.FamORAssem:
var declaringType = reader.GetTypeDefinition(method.GetDeclaringType());
return (declaringType.Attributes & TypeAttributes.Sealed) == 0;
default:
return false;
}
}
public override bool AllowImport( FieldDefinition field, MetadataReader reader )
{
switch (field.Attributes & FieldAttributes.FieldAccessMask)
{
case FieldAttributes.Public:
return true;
case FieldAttributes.Family:
case FieldAttributes.FamORAssem:
var declaringType = reader.GetTypeDefinition(field.GetDeclaringType());
return (declaringType.Attributes & TypeAttributes.Sealed) == 0;
default:
return false;
}
}
}