Ах, сразу после того, как я опубликовал этот последний комментарий, я думаю, что понял это:
The requested service 'ContractName=ConsoleApplication7.IDocumentRepository()'
has not been registered.
Обратите внимание, что после имени контракта есть пара скобок - это потому, что контракт является функцией, т.е.это сообщение было сгенерировано следующим конструктором, который немного отличается от того, который вы использовали в вашем примере:
Public Sub New(ByVal repositoryFactory As Func(Of IDocumentRepository))
_repositoryFactory = repositoryFactory
End Sub
Обратите внимание на 'Func' там.MEF, в отличие от Autofac, не рассматривает Func как специальный тип и поэтому не будет переводить его в тот же контракт, что и для Lazy.
Если вы хотите предоставить Func для компонента MEF, вам необходимо экспортировать егов качестве функции от Autofac.Это немного сложно:
builder.RegisterType(Of DocumentRepository).As(Of IDocumentRepository)
builder.Register(Function(c) c.Resolve(Of Func(Of IDocumentRepository))) _
.As(New UniqueService()) _
.Exported(Function(x) x.As(Of Func(Of IDocumentRepository))
Возможно, вам придется немного поиграть с синтаксисом, мой VB.NET довольно шаткий.
Я предполагаю, что в вашем файле есть устаревшие двоичные файлы/ Каталог расширений, которые мешают отладке этого.
Надеюсь, что это на высоте!
Ник