Я хотел бы разработать модель домена с использованием внутренних интерфейсов, а затем создать ограниченные общедоступные интерфейсы (для пользователей сборки)
Хотя это возможно в CSharp, я продолжаю сталкиваться с грязным кодом, связанным с параллельными интерфейсами:
public interface IAccount { IList<ITran> Transactions { get; } }
internal interface IAccountInternal : IAccount { IList<ITranInternal> Transactions { get; } }
internal class Account : IAccountInternal { }
здесь реализация учетной записи становится очень запутанной, так как есть много коллекций, которым нужны двойные интерфейсы и т. д.
Кроме того, я хотел бы гарантировать, что общедоступные интерфейсы реализованы с использованием внутренних интерфейсов (в отличие от прямого доступа к конкретным классам).
Это должен быть общий сценарий, может ли кто-нибудь порекомендовать чистый подход?