using System; #if !SILVERLIGHT && !NETFX_CORE using System.Runtime.Serialization; #endif namespace Developpez.Dotnet { /// /// Représente une référence faible fortement typée /// /// Type de l'objet référencé #if !SILVERLIGHT && !NETFX_CORE [Serializable] #endif public class WeakReference : WeakReference where T : class { /// /// Initialise une nouvelle instance de qui /// référence l'objet cible spécifié /// /// Objet cible public WeakReference(T target) : base(target) { } /// /// Initialise une nouvelle instance de qui /// référence l'objet cible spécifié, en indiquant si l'objet doit /// continuer à être suivi après sa finalisation /// /// Objet cible /// true si l'objet doit être suivi /// après sa finalisation (référence faible "longue"), false sinon /// (référence faible "courte") public WeakReference(T target, bool trackResurrection) : base(target, trackResurrection) { } #if !SILVERLIGHT && !NETFX_CORE /// /// Initialise une nouvelle instance de en utilisant /// les données désérialisées /// /// Objet contenant toutes les données nécessaires pour sérialiser ou désérialiser l'objet WeakReference actuel. /// Décrit la source et la destination du flux sérialisé spécifié par info. public WeakReference(SerializationInfo info, StreamingContext context) : base(info, context) { } #endif /// /// Renvoie l'objet cible de la référence faible /// public new T Target { get { return (T)base.Target; } } /// /// Tente d'obtenir l'objet cible de la référence faible /// /// Quand cette méthode retourne, contient une référence à l'objet cible s'il est disponible. /// true si l'objet cible a été obtenu; sinon, false. public bool TryGetTarget(out T target) { target = Target; return IsAlive; } } }