Я не совсем понимаю, зачем вам этот атрибут в классе. Разве не было бы более очевидно добавить его в свойство, например так:
public class MyClass
{
[UniqueId]
public int Ident{ get; }
}
Вы можете получить доступ к этому значению, используя что-то вроде
var identity = objectThatHasAnIdentity.GetId();
GetId
теперь может быть методом расширения в object
, который реализует код, подобный тому, что Марк опубликовал выше