0

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 変数が null であることが判明しました。なんで?

4

1 に答える 1

1

BuildPlanStrategies ではなく、Strategies コレクションに戦略を追加します。

BuildPlanStrategies は、解決されたオブジェクトを構築するオブジェクトを構築するためのものです。それはあなたがしていることではありません - オブジェクトを直接返しているだけです。実際、null になったことに驚いています。無効なキャスト例外がどこかにあると予想していました。

于 2011-06-12T04:52:56.230 に答える