C# 学习 乱解读 属性 Attribute
资料:
Attribute 类-
Attribute 类 (System) | Microsoft Docs
看了好几篇博文,胡乱解读下。
1 Atrribute是个类,有n中方法,n中继承(废话)
2 Atrribute类施加在 类/成员/方法 上
如
[Hello("这是个啥?")]
class AnimalTypeTestClass {
[AnimalType(Animal.Dog)]
public void DogMethod() {}
[AnimalType(Animal.Cat)]
public void CatMethod() {}
[AnimalType(Animal.Bird)]
public void BirdMethod() {}
}
3 施加属性类时,属性类比如已经实例化了。
如上面的
class AnimalTypeTestClass。虽然只是类定义。单我们已经知道,这个类有个
[Hello("这是个啥?")]属性,类里面的方法 DogMethod,有个[AnimalType(Animal.Dog)]属性。这个属性是有具体值的,是实例化了的。
4 属性类有啥用
对应定义了的属性。就等同于int i=0;一样,后面如果不用i 那么没啥鸟用。所以定义了属性,后面要用才有意义。
我理解的有两种用法,1 系统用 2 自用
4.1 (系统用)Attribute作为编译器的指令
系统用,定义属性后,系统自会使用他,我们就不管了。
在C#中存在着一定数量的编译器指令,如:#define DEBUG, #undefine DEBUG, #if等。这些指令专属于C#,而且在数量上是固定的。而Attribute用作编译器指令则不受数量限制。比如下面的三个Attribute:
Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。
DllImport:用来标记非.NET的函数,表明该方法在一个外部的DLL中定义。
Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。
4.2 自用
自用玩的比较多的是json转换...
不管怎么施加Attribute,总是有其他的地方要用到。
那么就要想办法取出属性。
比如 祖传代码
class a{
string str1;
string str2;
string str3;
}有个需求要转换为json是不是很抓虾
搞个属性...
浙公网安备 33010602011771号