【发布时间】:2015-04-14 14:48:00
【问题描述】:
示例代码:
public interface IMyClass
{
string Name { get; set; }
}
public class MyClass : IMyClass
{
public string Name { get; set; }
}
public static class Program
{
public static void Main()
{
var container = new Container();
var class1 = new MyClass() {Name = "class 1"};
container.Configure(x => x.For<IMyClass>().Use(class1).Named("MyClass"));
var instance1 = container.TryGetInstance<IMyClass>("MyClass");
container.EjectAllInstancesOf<IMyClass>();
var class2 = new MyClass() { Name = "class 2" };
container.Configure(x => x.For<IMyClass>().Use(class2).Named("MyClass"));
var instance2 = container.TryGetInstance<IMyClass>("MyClass");
Console.ReadKey();
}
}
我希望 instance2 返回 class2,但它返回 class1。示例代码有什么问题吗?我需要做什么才能获得 class2?
【问题讨论】:
-
我已经在我的笔记本电脑上测试了你的代码。我已经删除了这一行
container.EjectAllInstancesOf<IMyClass>();。它给了我一个 class2 的实例。 -
这不是我得到的。即使我删除了那个电话,我仍然得到 class1。您使用的是哪个版本的 StructureMap?我正在使用 3.1.0.0。谢谢!
-
根据(过时的)docs
EjectAllInstancesOf只弹出单例实例
标签: c# ioc-container structuremap named-instance