Tôi đang xây dựng một ứng dụng với kiến trúc sau:Trong DDD nơi để giữ ngoại lệ tùy chỉnh (ngoại lệ ứng dụng)? Trong tầng cơ sở hạ tầng?
UI - Application - Domain - Cơ sở hạ tầng
Tôi có một lớp ứng dụng mà cần phải sử dụng ngoại lệ tùy chỉnh. Tôi giữ các ngoại lệ tùy chỉnh này ở đâu? Trong tầng cơ sở hạ tầng? Vấn đề là lớp ứng dụng của tôi không có tham chiếu đến tầng cơ sở hạ tầng.
Cách chính xác là gì?
Cập nhật:
Dưới đây là mã của tôi mà ném một ngoại lệ trong 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)));
}
}
Thậm chí ImageSettings là một ConfigurationSection là ở Tầng ứng dụng của tôi, vì nó sử dụng nó. Tôi không thấy cách khác tôi có thể chuyển ImageSettings của tôi (mà nên ở trong tầng cơ sở hạ tầng) để tầng cơ sở hạ tầng, ai đó có thể giúp đỡ?
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"];
}
}
}
Ứng dụng tài liệu tham khảo cơ sở hạ tầng. Ứng dụng không tham khảo INfrastructure. Tôi nghĩ rằng đây là chính xác ... –