Estoy construyendo una aplicación con la siguiente arquitectura:En DDD dónde guardar excepciones personalizadas (excepciones de la aplicación)? En la capa de infraestructura?
UI - Aplicación - Dominio - Infraestructura
Tengo una capa de aplicación que necesita usar excepciones personalizadas. Donde guardo estas excepciones personalizadas? En la capa de infraestructura? El problema es que mi capa de aplicación no tiene referencia a la capa de infraestructura.
¿Cuál es la forma correcta?
Actualización:
Aquí está mi código que lanzar una excepción en la capa de aplicación:
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)));
}
}
Incluso ImageSettings es un ConfigurationSection está en mi capa de aplicación, ya que lo utiliza. No veo otra manera de transferir mis ImageSettings (que deberían permanecer en Infrastrucuture Layer) a Infrastructure Layer, ¿alguien puede ayudarme?
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"];
}
}
}
aplicación de referencia de infraestructura. Aplicación no referencia IN infraestructura. Creo que este es el correcto ... –