В конечном итоге мы будем использовать следующее:
public class SomeRepository : ISomeRepository
{
private SomeRepository()
{
}
public static ISomeRepository CreateForIOC()
{
return new SomeRepository();
}
}
и во время загрузки модуля мы сопоставляем интерфейс ISomeRepository StandardKernel с методом CreateForIOC ().
Это не останавливаетразработчики могут напрямую вызывать CreateForIOC, но, по крайней мере, вынуждают их: а) кодировать интерфейс, б) осознавать, что CreateForIOC (), вероятно, не тот метод, который нужно вызывать при создании экземпляра объекта, и, по крайней мере, задавать вопрос об этом ведущему разработчику.