2

看起来您在 StructureMap 中每个插件类型只能有一个生命周期策略。有没有办法解决?这个简单的控制台应用程序演示了“最后”“获胜”的任何生命周期。

namespace StructureMapLifecycle
{
  public class Program
  {
    public static void Main(string[] args)
    {
      StructureMap.ObjectFactory.Initialize(
        x =>
        {
          x.For<ISomething>().Add<SomethingA>().Named("A");
          x.For<ISomething>().Singleton().Add<SomethingB>().Named("B");
          x.For<ISomething>().Add<SomethingC>().Named("C");
          x.For<ISomething>().HybridHttpOrThreadLocalScoped().Use<SomethingC>();
        });

      Console.Write(StructureMap.ObjectFactory.WhatDoIHave());
      Console.ReadLine();
    }
  }

  public interface ISomething
  {
    void DoSomething();
  }

  public class SomethingA : ISomething
  {
    public void DoSomething()
    {
      Console.WriteLine("Do something A");
    }
  }

  public class SomethingB : ISomething
  {
    public void DoSomething()
    {
      Console.WriteLine("Do something B");
    }
  }

  public class SomethingC : ISomething
  {
    public void DoSomething()
    {
      Console.WriteLine("Do something C");
    }
  }
}
4

2 回答 2

4

我的一位同事发现 Jeremy Miller 指出这是 StructureMap 的长期限制。 http://jeremydmiller.com/2012/01/11/kicking-off-structuremap-3/

于 2012-06-20T14:46:59.440 回答
0

这已在 StructureMap 3.0 中修复。现在您可以简单地更改每个实例的生命周期。

于 2014-04-24T13:22:59.213 回答