我有一个接口和一个定义如下的类
public interface IShape
{
}
public class Square : IShape
{
}
我知道我可以在Structure Map中为依赖注入配置它,如下所示。
ObjectFactory.Initialize(x =>
{
x.For<IShape>().Use<Square>().Named("Square");
}
);
但是,如果我只能在运行时知道具体类型,我想知道如何配置结构图。例如,我想如下所示。;
ObjectFactory.Initialize(x =>
{
x.For<IShape>().Use<Typeof(Square)>().Named("Square");
}
);
编辑:使用附加DLL插入新的形状对象(即圆圈)。因此,设计也应该能够处理这种情况。
非常感谢任何建议。
谢谢
答案 0 :(得分:1)
这适合我。
public class ShapeHolder
{
public IShape shape{ get; set ;}
public string shapeName { get; set; }
}
//Run time shape creation
ShapeHolder shapeholder = factory.CreateShape();
ObjectFactory.Initialize(x =>
{
x.For(typeof(IShape)).Use(shapeholder.shape).Named(shapeholder.shapeName);
} );
答案 1 :(得分:0)
一些lambda表达式可能对你有帮助..
// Return a shape based on some runtime criteria
x.For<IShape>.Use(() => shapeFactory.Create());
public class ShapeFactory
{
public IShape Create()
{
// Return a shape based some criteria
return new Square();
}
}