Sto costruendo un'applicazione con seguente architettura:In DDD dove mantenere le eccezioni personalizzate (eccezioni dell'applicazione)? Nel livello Infrastruttura?
UI - Applicazione - Dominio - Infrastruttura
Ho un Application Layer che hanno bisogno di utilizzare le eccezioni personalizzate. Dove tengo queste eccezioni personalizzate? Nel livello Infrastruttura? Il problema è che il mio livello di applicazione non ha riferimento al livello dell'infrastruttura.
Qual è il modo corretto?
Aggiornamento:
Ecco il mio codice che un'eccezione in Application Layer:
public void InsertNewImage(ImagemDTO imagemDTO)
{
if (isValidContentType(imagemDTO.ImageStreamContentType))
{
string nameOfFile = String.Format("{0}{1}", Guid.NewGuid().ToString(), ContentTypeHelper.GetExtension(imagemDTO.ImageStreamContentType));
string path = String.Format("{0}{1}", ImageSettings.PathToSave, nameOfFile);
_fileService.SaveFile(imagemDTO.ImageStream, path);
Imagem imagem = new Imagem()
{
Titulo = imagemDTO.Titulo,
Descricao = imagemDTO.Descricao,
NomeArquivo = nameOfFile
};
_imagemRepository.Add(imagem);
_dbContext.SaveChanges();
} else
{
throw new WrongFileTypeException(String.Format("{0} is not allowed.", ContentTypeHelper.GetExtension(imagemDTO.ImageStreamContentType)));
}
}
Anche ImageSettings è un ConfigurationSection è nel mio Application Layer perché lo usa. Non vedo l'altro modo in cui posso trasferire i miei ImageSettings (che dovrebbero rimanere in Infrastrucuture Layer) a Infrastructure Layer, qualcuno può aiutarti?
public class ImageSettings : ConfigurationSection
{
/// <summary>
/// Caminha onde será salvo as imagens
/// </summary>
[ConfigurationProperty("pathToSave", IsRequired = true)]
public string PathToSave
{
get { return (string)this["pathToSave"]; }
set { this["pathToSave"] = value; }
}
/// <summary>
/// Extensões permitidas pra upload
/// </summary>
[ConfigurationProperty("allowedExtensions", IsRequired = true)]
public string AllowedExtensions
{
get { return (string)this["allowedExtensions"]; }
set { this["allowedExtensions"] = value; }
}
/// <summary>
/// Tamanho das imagens
/// </summary>
[ConfigurationProperty("imageSize")]
public ImageSizeCollection ImageSize
{
get
{
return (ImageSizeCollection)this["imageSize"];
}
}
}
riferimento Application Infrastructure. L'applicazione non fa riferimento a infrastruttura. Penso che questo sia il corretto ... –