2

我正在尝试使用 StructureMap 的 InstanceScope.HttpSession 功能,但遇到了问题。我有以下用于测试的方法:

public static class StructureMapTest {
    public static T Get<T>() {
        ObjectFactory.Configure(x => x.AddRegistry(new RepositoryRegistry()));
        return ObjectFactory.GetInstance<T>();
    }
}

我的 RepositoryRegistry 类如下所示:

public class RepositoryRegistry : Registry {
    public RepositoryRegistry() {
        ForRequestedType<IClientRepository>()
            .CacheBy(InstanceScope.HttpSession)
            .TheDefault.Is.OfConcreteType<ClientRepository>();
    }
}

因此,在我的客户端代码(ASP.NET MVC 控制器)中,我执行以下操作:

public ActionResult InjectionTest() {
    return Content(DataProvider.Clients.CreatedDate.ToString());
}

每次我甚至从同一个会话中调用这个控制器时,我每次都会得到一个新实例。我在这里做错了什么?

4

1 回答 1

1

将 ObjectFactory.Configure 移动到全局 asax。每次请求对象时,您不应该继续重新配置结构映射。

于 2009-02-27T06:50:39.107 回答