Autofac注入枚举

时间:2013-11-28 17:48:06

标签: c# autofac

如何将枚举值注入构造函数?

我的构造函数是:

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);

问题:

实现枚举的正确方法是什么?

1 个答案:

答案 0 :(得分: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,
}