结构映射:运行时的具体类

本文关键字:运行时 映射 结构 | 更新日期: 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();
    }
}