结构映射:运行时的具体类
本文关键字:运行时 映射 结构 | 更新日期: 2023-09-27 18:04:46
我有一个定义如下的接口和类
public interface IShape
{
}
public class Square : IShape
{
}
我知道我可以在结构映射中为依赖注入配置如下。
ObjectFactory.Initialize(x =>
{
x.For<IShape>().Use<Square>().Named("Square");
}
);
然而,我想知道如果我只能在运行时知道具体类型,我如何配置结构映射。例如,我想这样做:;
ObjectFactory.Initialize(x =>
{
x.For<IShape>().Use<Typeof(Square)>().Named("Square");
}
);
编辑:一个新的形状对象(如圆)将使用一个额外的DLL插入。因此,设计也应该能够处理这种情况。
如有任何建议,不胜感激。
谢谢
这对我很有用。
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);
} );
一些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();
}
}