Є частина нашої кодової бази, написана у такому стилі:
// IScheduledTask.cs
public interface IScheduledTask
{
string TaskName { get; set; }
int TaskPriority { get; set; }
List<IScheduledTask> Subtasks { get; set; }
// ... several more properties in this vein
}
// ScheduledTaskImpl.cs
public class ScheduledTaskImpl : IScheduledTask
{
public string TaskName { get; set; }
public int TaskPriority { get; set; }
public List<IScheduledTask> Subtasks { get; set; }
// ... several more properties in this vein,
// perhaps a constructor or two for convenience.
}
Тобто, існує велика кількість інтерфейсів, що вказують лише набір властивостей, без поведінки, кожен з єдиною відповідною реалізацією, яка реалізує їх з автоматичними властивостями. Код пише хтось досить старший (набагато більше, ніж я), і крім цього використання інтерфейсів є розумним процесуальним кодом. Мені було цікаво, чи стикався хтось із хтось / використовував цей стиль і чи має він переваги перед просто використанням конкретних DTO скрізь без інтерфейсів.