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 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());
}
}
where TStrategy : IBuilderStrategy, new ()
{
lock (lockObject)
{
stages[stage].Add(new TStrategy());
}
}
public
void
SetDefault
<
TPolicyInterface
>
(TPolicyInterface policy)
where TPolicyInterface : IBuilderPolicy
{
SetDefault(typeof(TPolicyInterface), policy);
}
where TPolicyInterface : IBuilderPolicy
{
SetDefault(typeof(TPolicyInterface), policy);
}
Builder相关类: