Как зарегистрировать класс с параметром `Func<>`?

У меня есть следующий код:

_container = new UnityContainer();
_container.RegisterType<IDownloader, Downloader>();
_container.RegisterType<INewObject, NewObject>();
_container.RegisterType<SearchViewModel>();

Класс SearchViewModelс внедрением конструктора:

class SearchViewModel
{
    private readonly Func<IDownloader> _downloaderFactory;
    private readonly INewObject _newObject;
    private IDownloader _downloader;

    public SearchViewModel(Func<IDownloader> downloaderFactory, INewObject newObject)
    {
        _downloaderFactory = downloaderFactory;
        _newObject = newObject;
    }        
}

Вопрос: Как зарегистрировать SearchViewModel, который имеет Fun<>как параметр?

_container.RegisterType<SearchViewModel>(new InjectionConstructor(DownloaderFactory()));

Приведенный выше код работает только без INewObject.

Цель:Разрешить factory с помощью InjectionConstructorи разрешить INewObject, INewObject2, INewObject3автоматически (как без параметров: RegisterType()).

Возможно ли это? Возможно альтернативы?

8
задан CodesInChaos 31 March 2012 в 10:27
поделиться