Supponiamo di avere una classe astratta EntityBase che è la classe base per tutte le nostre entità, ad es.
public abstract class EntityBase {
public Guid Id {get;set;}
}
public class Customer : EntityBase {
public string Name {get;set;}
}
public class Orders : EntityBase {
public string OrderNumber {get;set;}
}
Dove l'intento è quindi essere in grado di creare un metodo di estensione su EntityBase in modo che possa essere proiettato nelle classi di dominio, ad es.
public static class ProjectionExtensions {
public static TProjection ProjectAs<TProjection>(this EntityBase item) where TProjection : class, new() {
return Mapper.Map<object, TProjection>(item);
}
}
Questo viola LSP? È meglio implementare un'interfaccia IEntity
piuttosto che una classe base astratta EntityBase
?
per es.
public interface IEntity {
public Guid Id {get;set;}
}
public class Customer : IEntity {
public Guid Id {get;set;}
public string Name {get;set;}
}
public class Orders : IEntity {
public Guid Id {get;set;}
public string OrderNumber {get;set;}
}
public static class ProjectionExtensions {
public static TProjection ProjectAs<TProjection>(this IEntity item) where TProjection : class, new() {
return Mapper.Map<object, TProjection>(item);
}
}