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;
}
}
}