2013-11-28 2 views
1

Как я могу ввести значение перечисления в конструктор?Перечисление Autofac inject

Мой конструктор:

public AutoComplete(SearchType searcherType, ISearchResultParser searchResultParser, string[] ignoreSearchTerms = null) 

Где мой тип поиска: регистрация

public enum SearchType 
{   
    Document,    
    PageSearch, 
} 

Мои Autofac:

builder.Register(x => new AutoComplete(SearchType.Document, 
    x.ResolveNamed<ISearchResultParser>(NamedAutofacInstances.AutoCompleteSearchResultParser), 
    invalidSearchTerms); 

Вопрос:

Каков правильный способ реализации перечисления?

+0

Ваш конструктор автозаполнен, но вы регистрируете AutoCompleteForExamine. Это нормально? –

+0

@AlexandrNikitin Thnx для указания, это была опечатка – cpoDesign

ответ

1

Как насчет чего-то подобного?

using Autofac; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void Test1() 
    { 
     var builder = new ContainerBuilder(); 
     builder.RegisterType<AutoComplete>() 
      .WithParameter((pi, c) => pi.ParameterType == typeof(SearchType), 
          (pi, c) => SearchType.Document); 
     var container = builder.Build(); 
     var autoComplete = container.Resolve<AutoComplete>(); 
     Assert.AreEqual(SearchType.Document, autoComplete.SearcherType); 
    } 
} 

public class AutoComplete 
{ 
    public AutoComplete(SearchType searcherType) 
    { 
     SearcherType = searcherType; 
    } 
    public SearchType SearcherType { get; private set; } 
} 

public enum SearchType 
{ 
    Document, 
    PageSearch, 
} 
+0

выглядит великолепно.thnx – cpoDesign

Смежные вопросы