Wingedox

自己记录学习笔记的地方

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
在执行CabApplication<TWorkItem>类中的Run()时会调用CreateBuilder():

        private Builder CreateBuilder()
        
{
            Builder builder 
= new Builder();

            builder.Strategies.AddNew
<EventBrokerStrategy>(BuilderStage.Initialization);
            builder.Strategies.AddNew
<CommandStrategy>(BuilderStage.Initialization);
            builder.Strategies.Add(
new RootWorkItemInitializationStrategy(this.OnRootWorkItemInitialized), BuilderStage.Initialization);
            builder.Strategies.AddNew
<ObjectBuiltNotificationStrategy>(BuilderStage.PostInitialization);

            builder.Policies.SetDefault
<ISingletonPolicy>(new SingletonPolicy(true));
            builder.Policies.SetDefault
<IBuilderTracePolicy>(new BuilderTraceSourcePolicy(new TraceSource("Microsoft.Practices.ObjectBuilder")));
            builder.Policies.SetDefault
<ObjectBuiltNotificationPolicy>(new ObjectBuiltNotificationPolicy());

            
return builder;
        }

builder.Strategies.AddNew<EventBrokerStrategy>(BuilderStage.Initialization)这句代码中AddNew的执行情况:

        public void AddNew<TStrategy>(TStageEnum stage)
            where TStrategy : IBuilderStrategy, 
new()
        
{
            
lock (lockObject)
            
{
                stages[stage].Add(
new TStrategy());
            }

        }


        public void SetDefault<TPolicyInterface>(TPolicyInterface policy)
            where TPolicyInterface : IBuilderPolicy
        
{
            SetDefault(
typeof(TPolicyInterface), policy);
        }


Builder相关类:
posted on 2007-07-22 19:51  想飞的黄牛  阅读(374)  评论(0编辑  收藏  举报