Comment se débarrasser de la CA2000 avertissement lorsque la propriété est transférée?

Le code suivant génère deux CA2000 avertissements (parmi d'autres, mais ce n'est pas le point).

public sealed class Item: IDisposable
{
    public void Dispose() {}
}

public sealed class ItemContainer
{
    public void Add(Item item)
    {
    }
}

public sealed class Test: IDisposable
{
    private ICollection<Item> itemCollection;
    private ItemContainer itemContainer;

    private void Add(Item item)
    {
        itemCollection.Add(item);
    }

    public void Initialize()
    {
        var item1 = new Item(); //no warning
        itemCollection.Add(item1);

        var item2 = new Item(); //CA2000: call Dispose on object item2
        Add(item2);

        var item3 = new Item(); //CA2000: call Dispose on object item3
        itemContainer.Add(item3);
    }

    public void Dispose() {}
}

Noter qu'il n'y a pas d'avertissement générés pour élément1. Il semble, d'Analyse de Code suppose que le ICollection prendra la responsabilité de l'élément et, éventuellement, de la jeter.

Est-il un moyen pour marquer mon Add de méthodes, de sorte que l'avertissement s'en va?

Je suis à la recherche de quelque chose de semblable à ValidatedNotNullAttribute pour CA1062.

Edit: pour préciser: ce n'est pas mon vrai code. Dans le code réel, tout est bien disposé.

C'est juste que CA ne reconnaît pas que l'appel à mon Add méthodes de transferts de propriété.
Je le voudrais pour traiter mon Ajouter des méthodes dans la même façon qu'il traite ICollection.Add.

À l'élimination dans le même champ d'application n'est pas une option.

OriginalL'auteur Henrik | 2010-10-14