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

4

我有一个如下所示的接口和类定义:

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插入。因此,设计应该能够处理这种情况。

任何建议都将不胜感激。

谢谢。

2个回答

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);
} );

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();
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接