2013-04-05 12 views
5

StructureMap'ta, Http kapsamındaki nesneleri belirli bir Kapsayıcı örneğine nasıl bırakıp atabilirim? Nesne Fabrikası'nda varsayılan duruş için ReleaseAndDisposeAllHttpScopedObjects() yöntemini çalıştırabilirim, ancak Container sınıfı ve IContainer arabiriminin böyle bir yöntemi yok gibi görünüyor.Kapsayıcı örneğinde Http kapsamındaki tüm nesneler nasıl serbest bırakılır ve atılır?

public static void ReleaseAndDisposeAllHttpScopedObjects() 
{ 
    HttpContextLifecycle.DisposeAndClearAll(); 
} 

IE: Eğer ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects dahili özelliklerine bakacak olursak

cevap

6

, bunu böyle uygulanan bir conveniency yöntemi olduğunu görebiliriz. Nesneleri temizlemek için HttpContextLifecycle.DisposeAndClearAll yöntemini çağırabilirsiniz.

Düzenleme: HttpContextLifecycle kapsayıcı başına global değil ve olduğundan, bir Http isteği sırasında nesne ömrü boyunca daha ince taneli denetim elde etmek için çözüm nested container bir çözüm olacağını düşünüyorum.

+0

Teşekkürler, ancak yalnızca geçerli kapsayıcı örneğindeki değil, tüm Http kapsamındaki nesnelere sahip gibi görünüyor. –

+0

@ guillegr123 - "HttpContextLifecycle" kapsayıcı değil, globaldir. – PHeiberg

+0

Bir "HttpRequest" içindeki belirli nesnelerin ömrünü kontrol etmek isterseniz, [iç içe geçmiş bir kapsayıcı] ile gitmeniz gerektiğini düşünüyorum (http://codebetter.com/jeremymiller/2010/02/10/nested-containers-in- structuremap-2-6-1 /) yaklaşımı. – PHeiberg