Was bedeutet [PartCreationPolicy (CreationPolicy.Shared)]?Was bedeutet [PartCreationPolicy (CreationPolicy.Shared)]
6
A
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
}
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
Betrachten Sie IRegionMemberLifeTime.KeepAlive ebenfalls. –