From your comments on the previous answer, I think you will find that .NET attributes are not as flexible as you want them to be.
You asked: "Is there any basic attribute property that has some events, such as onGet and onSet?" - not; attributes have no built-in interaction with their goals, whether it be methods or classes. In fact, at runtime you cannot even indicate what the purpose of the attribute is; you must first know the target (class, method, property, etc.), and then ask what attributes adorn it.
Secondly, attributes are not actually created until you request them. When you call GetCustomAttributes , the GetCustomAttributes system evaluates the assembly metadata and instantiates the attributes that were specified. If you call it twice in a row, you will get two sets of identical attributes.
Returning to your other question: if you want to know when a property decorated with your attributes is set or received, you need to implement INotifyPropertyChanged for all your related classes, write code to search all your classes for the properties marked with this attribute when loading the assembly, and then create some interactivity that hooked PropertyChanged events to any code you need to fire. (And this only notifies you of set operations, not get .)
I don't know if this is useful, but there you go. :-)
source share