Tengo una clase con alguna funcionalidad predeterminada / compartida. Yo uso abstract classpara ello:
public interface ITypeNameMapper
{
string Map(TypeDefinition typeDefinition);
}
public abstract class TypeNameMapper : ITypeNameMapper
{
public virtual string Map(TypeDefinition typeDefinition)
{
if (typeDefinition is ClassDefinition classDefinition)
{
return Map(classDefinition);
}
...
throw new ArgumentOutOfRangeException(nameof(typeDefinition));
}
protected abstract string Map(ClassDefinition classDefinition);
}
Como puede ver, también tengo la interfaz ITypeNameMapper. ¿Tiene sentido definir esta interfaz si ya tengo una clase abstracta TypeNameMappero si abstract classes suficiente?
TypeDefinition en este ejemplo mínimo también es abstracto.