Должны ли TypeIds двух семантически идентичных атрибутов быть разными или одинаковыми?

MSDN утверждает о свойстве TypeId, что:

Как реализовано, этот идентификатор является просто Type атрибута. Однако предполагается, что уникальный идентификатор будет использоваться для идентификации двух атрибутов одного типа.

Однако, предполагается ли использовать его для различения отдельных экземпляров атрибутов (например, связанных с различными экземплярами класса, к которому они применяются) или между атрибутами, которые имеют одинаковый тип, но из-за значений их свойств семантически различны?

Например, допустим, у меня есть следующее:

public sealed class AmpVolume : System.Attribute
{
    public int MaxVolume { get; set; }
    public AmpVolume(int maxvolume)
    {
        MaxVolume = maxvolume;
    }
}

[AmpVolume(11)]
public class SpinalTapGuitarAmp
{
}

[AmpVolume(11)]
public class SpinalTapBassAmp
{
}

[AmpVolume(10)]
public class RegularAmp
{
}

Должен ли я реализовать TypeId как

        get
        {
            return (object)this; //TypeId identifies every individual instance of the attribute
        }

или

        get
        {
            return (object)MaxVolume; //If we compare two AmpVolume attributes, they should be the same if the volume is the same, right?
        }

5
задан sebf 4 January 2012 в 14:51
поделиться