novice ici, désolé si cela est une question évidente.référence forte de Autofac 2
J'ai lu cette page: http://code.google.com/p/autofac/wiki/NewInV2
Dans Autofac 1, les références faibles sont détenues par le conteneur. Cela prend tout son sens si les objets référencés utilisent la mise au rebut pour libérer les ressources du GC/finaliseur, mais si la méthode dispose de la logique de l'application, la synchronisation du GC peut introduire un comportement inattendu.
Autofac 2 contient des références normales. Pour désactiver ce comportement et gérer manuellement la mise au rebut, utilisez le modificateur d'enregistrement ExternallyOwned.
Est-ce que cela veut dire quand je dois libérer un objet qui est résolu par Autofac au GC, je ne peux pas dire simplement:
a = null;
parce que Autofac détient une forte référence à l'objet. Au lieu de cela, je devrais utiliser occasion <>:
public class MyClass
{
public MyClass(Owned<A> a)
{
a.Value.Dosomething();
a.Dispose();
}
}
ou utiliser le modificateur d'enregistrement ExternallyOwned:
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).ExternallyOwned();
plus tard, je devrais être en mesure d'utiliser un = null pour libérer l'objet du GC.
Est-ce exact?
Merci!
Merci pour la réponse rapide et le lien! –