使用ObjectBuilder创建对象

时间:2010-12-21 04:51:14

标签: c#

想要使用ObjectBuilder或ObjectBuilder2创建对象。

我不想使用 StructureMap

我能够使用下面提到的代码创建具有无参数构造函数的对象。

 public class ObjectFactory : BuilderBase<BuilderStage>
    {
        public static T BuildUp<T>()
        {
            var builder = new Builder();

            var locator = new Locator { { typeof(ILifetimeContainer), new LifetimeContainer() } };

            var buildUp = builder.BuildUp<T>(locator, null, null);
            return buildUp;
        }

用于创建客户的对象,您只需致电

ObjectFactory.BuildUp<Customer>

然而,这会创建没有参数的类对象,但是我需要创建具有带参数的构造函数的对象。

1 个答案:

答案 0 :(得分:0)

使用CreateNew Attribute类来构建对象,并且工作正常。还使用了SessionStateBindingStrategry,以便对象可以将会话变量作为构造函数中的参数。

  public static T BuildUp<T>()
            {
                var locator = new Locator { { typeof(ILifetimeContainer), new LifetimeContainer() } };
//For accessing the session variables through StateValue<>
                 locator.Add(new DependencyResolutionLocatorKey(typeof(ISessionStateLocatorService), null), new SessionStateLocatorService());

                var builder = new Builder();

                var attribute = new CreateNewAttribute();
                IParameter parameter = attribute.CreateParameter(typeof (T));

                builder.Strategies.AddNew<SessionStateBindingStrategy>(BuilderStage.PreCreation);

                var builderContext = 
                    new BuilderContext(builder.Strategies.MakeStrategyChain(),locator,builder.Policies);
                object value = parameter.GetValue(builderContext);

                return (T)value;
            }