Я не совсем понимаю, почему вы хотите создать интерфейс для AdminRepository
, который включает в себя вложенные классы. Исходя из вашего кода, я думаю, вы бы получили
public interface IAdminRepository
{
bool MemberHasPermission(int id)
//and so on - you didn't provide any methods, so I'm making one up
// ...
}
На этом этапе ваш IAdminRepository
указывает контракт, почему в контракте также указывается реализация (в вашем случае защищенные вложенные классы)?
Обратите внимание, что это не означает, что я понимаю ваше использование защищенных вложенных классов, или почему вы называете это "шаблоном фасада", когда все абстрагированные компоненты фактически являются внутренней реализацией, или почему переход к модели DDD делает доступ к вашему хранилищу из WCF сложно. Тем не менее, я, конечно, не понимаю, почему вы пытаетесь указать вложенные классы в интерфейсе, но c # не допускает этого в любом случае (обратите внимание, что VB допускает вложенные типы в интерфейсах). Если вы хотите указать контракты таким образом, вы можете использовать абстрактные классы без реализации вместо интерфейса, но это создает проблемы наследования.