在执行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相关类:
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相关类:


浙公网安备 33010602011771号