1

我正在尝试使用 autofac Container 解析对象列表,并期待一个空列表作为响应。但是,我无法获得空列表作为回报,而是将计数计为 1。

我也尝试在 aotufac conatiner 中不进行列表注册,但得到相同的响应。

<pre><code>
   class autofacFactory : Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterGeneric(typeof(List<>)).As(typeof(IList<>));
            builder.RegisterType<Response>().As<IResponse>();
            builder.RegisterType<CustomDependencyResolver>().As<ICustomDependencyResolver>();
        }
    }
    public class Response : IResponse
    {
        public string TransactionNo { get; set; }
        public string SchemeCode { get; set; }
    }
    public interface IResponse
    {
        string TransactionNo { get; set; }
        string SchemeCode { get; set; }
    }


    public interface ICustomDependencyResolver
    {
        TResolved Resolve<TResolved>();
    }

    internal class CustomDependencyResolver : ICustomDependencyResolver
    {
        private readonly ILifetimeScope _lifetimeScope;

        public CustomDependencyResolver(ILifetimeScope lifetimeScope)
        {
            _lifetimeScope = lifetimeScope;
        }

        public TResolved Resolve<TResolved>()
            => _lifetimeScope.Resolve<TResolved>();

    }

    static void Main(string[] args)
        {
            var builder = new ContainerBuilder();
            builder.RegisterModule(new autofacFactory());
            using (var container = builder.Build())
            {
                ICustomDependencyResolver customDependencyResolver = container.Resolve<ICustomDependencyResolver>();
                var collection = customDependencyResolver.Resolve<ICollection<IResponse>>();
                var list = customDependencyResolver.Resolve<IList<IResponse>>();
            }
        }



    Actual response:
        [Image1][1]
        [Image2][2]


        [Expected Response][3]


          [1]: https://i.stack.imgur.com/NVXeW.jpg
          [2]: https://i.stack.imgur.com/k58QX.jpg
          [3]: https://i.stack.imgur.com/EcFyc.jpg
4

1 回答 1

0

尝试不注册IList<>List<>- Autofac 内置支持

于 2018-07-30T19:11:39.827 回答