Ho una classe con alcune funzionalità predefinite / condivise. Io uso abstract class
per questo:
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);
}
Come puoi vedere, ho anche l'interfaccia ITypeNameMapper
. Ha senso definire questa interfaccia se ho già una classe astratta TypeNameMapper
o abstract class
è sufficiente?
TypeDefinition
in questo esempio minimale è anch'esso astratto.