想要使用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>
然而,这会创建没有参数的类对象,但是我需要创建具有带参数的构造函数的对象。
答案 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;
}