一个关于c#特性的问题!!!!!!!!!!!!!!

特性是可以在程序运行的时候决策程序的运行。
就像自带的 [Obsolete("aaa",true)]在运行的时候会让编译器报错。
我现在自己做得自定义特性只能用反射来获取一些信息,怎么才能像Obsolete特性一样。直接影响程序的运行?
还有Obsolete特性实现原理是如何?

[Obsolete("aaa",true)]
这样的特性是写给编译器或者clr看的,是定义好的。你也可以用,但是你不能发明新的了。