结构图:运行时的具体类

时间:2011-08-05 04:23:43

标签: c# .net design-patterns .net-3.5 c#-4.0

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

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 个答案:

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