【问题标题】:Why does Unity custom BuilderStrategy returns null even after setting Existing property为什么Unity自定义BuilderStrategy在设置Existing属性后返回null
【发布时间】:2011-06-11 19:20:51
【问题描述】:

我正在使用 Unity 的第 2 版(Prism4 附带)。我正在尝试编写一个可以返回未注册类型的可枚举的扩展。以下代码是我编写的,但在解析调用后我得到了 null。

        class EnumerableStrategy : BuilderStrategy
        {
            public override void PreBuildUp(IBuilderContext context)
            {
                context.Existing = new []{"Test"};
                context.BuildComplete = true;
            }
        }

        class EnumerableExtension : UnityContainerExtension
        {
            protected override void Initialize()
            {
                Context.BuildPlanStrategies.AddNew<EnumerableStrategy>( Microsoft.Practices.Unity.ObjectBuilder.UnityBuildStage.PreCreation);
            }
        }
        static void Main(string[] args)
        {

            var container = new UnityContainer();
            container.AddNewExtension<EnumerableExtension>();
            var items = container.Resolve<IEnumerable<string>>();
            foreach (var item in items)
                Console.WriteLine(item.ToString());
        }

Items 变量结果为空。为什么?

【问题讨论】:

  • Prism4 自带 Unity 的哪个版本?
  • 2.0.刚刚更新了问题

标签: .net unity-container prism unity2.0 objectbuilder


【解决方案1】:

将策略添加到 Strategies 集合,而不是 BuildPlanStrategies。

BuildPlanStrategies 用于构造将构造已解析对象的对象。这不是你在做什么 - 你只是直接返回对象。实际上,我很惊讶你得到了 null - 我本来希望在某处出现无效的强制转换异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 2011-06-03
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2018-07-08
    相关资源
    最近更新 更多