.NET7泛性特性在哪些复杂编程场景中能发挥其强大优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计997个文字,预计阅读时间需要4分钟。
利用特性,可高效关联元数据或声明性信息与代码(程序集、类型、方法、属性等)。特性与程序实体关联后,运行时可通过反射查询特性。
使用特性,可以有效地将元数据或声明性信息与代码(程序集、类型、方法、属性等)相关联。将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性。
learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/attributes/
上面是引自微软官方文档,关于特性的作用的描述。在.NET7中,可以给特性定义泛型了。这看起来似乎和特性的参数有矛盾,因为特性的参数是以下类型。
- 简单类型:bool,byte,char,double,float,int,long,sbyte,short,string,uint,ulong,ushort。
- object类型。
- System.Type类型。
- 枚举类型。
- 上面类型的一维数组。
看下面的例子,定义泛型参特性,想把T当构造函数参数,也就是特性的必值参数使用,但是这里报错了,信息是:这不是有效的特性参数类型,这也就是上面说的特性参数与泛型有矛盾的地方。
本文共计997个文字,预计阅读时间需要4分钟。
利用特性,可高效关联元数据或声明性信息与代码(程序集、类型、方法、属性等)。特性与程序实体关联后,运行时可通过反射查询特性。
使用特性,可以有效地将元数据或声明性信息与代码(程序集、类型、方法、属性等)相关联。将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性。
learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/attributes/
上面是引自微软官方文档,关于特性的作用的描述。在.NET7中,可以给特性定义泛型了。这看起来似乎和特性的参数有矛盾,因为特性的参数是以下类型。
- 简单类型:bool,byte,char,double,float,int,long,sbyte,short,string,uint,ulong,ushort。
- object类型。
- System.Type类型。
- 枚举类型。
- 上面类型的一维数组。
看下面的例子,定义泛型参特性,想把T当构造函数参数,也就是特性的必值参数使用,但是这里报错了,信息是:这不是有效的特性参数类型,这也就是上面说的特性参数与泛型有矛盾的地方。

