2012-09-23 9 views

Antwort

4

zu Julien Antwort hinzuzufügen, glaube ich konzeptionell Sie es als a Singleton denken kann.

11

Dies bedeutet, dass CompositionContainer beim Anfordern einer mit [PartCreationPolicy(CreationPolicy.Shared)] dekorierten Klasse immer dieselbe Instanz dieser Klasse zurückgibt und keine neue Instanz erstellt.

[Export] 
[PartCreationPolicy(CreationPolicy.Shared)] 
class Foo 
{ 

} 

Die obige Klasse wird folgendes Ergebnis geben:

private void Test() 
{ 
    var foo1 = Container.GetExportedValue<Foo>(); 
    var foo2 = Container.GetExportedValue<Foo>(); 
    Console.WriteLine(foo1 == foo2); // => True 
} 
+0

Ich kann umgehen, indem Sie [PartCreationPolicy (CreationPolicy.NonShared)] hinzufügen, aber es bringt auch ein paar weitere Probleme. Wie Objektlebenszyklus. Wann werden diese Objekte entsorgt? – Kelly

+0

Betrachten Sie IRegionMemberLifeTime.KeepAlive ebenfalls. –