免费s站推广网站,wordpress 在线qq,泊头市网站建设,互联网+政务服务平台背景 C#是强类型语言#xff0c;任何对象都有Type#xff0c;有时候需要使用Type来进行反射、序列化、筛选等#xff0c;获取Type有Type.GetType, typeof()#xff0c;object.GetType() 等方法#xff0c;本文重点介绍Type.GetType()。
系统类型/本程序集内的类型 对于系…背景 C#是强类型语言任何对象都有Type有时候需要使用Type来进行反射、序列化、筛选等获取Type有Type.GetType, typeof()object.GetType() 等方法本文重点介绍Type.GetType()。
系统类型/本程序集内的类型 对于系统自带的类型或本程序集内的类型可以直接通过类型全名(FullName)来获取如下所示 Type.GetType(System.String) 。
引用的外部类型 Type.GetType(FullName) 会返回null需要使用Type 的 AssemblyQualifiedName即包含类名和程序集信息的限定名形如 Type.GetType(“System.String, System.Private.CoreLib, Version6.0.0.0, Cultureneutral, PublicKeyToken7cec85d7bea7798e”)。//用的是.net6
泛型类型 泛型类型应该分四步
第一步获取不带参数的泛型定义即 var genericType Type.GetType(System.Collections.Generic.Dictionary2);
第二步获取参数的类型数组 var args genericType.GetGenericArguments();//返回TKey,TValue
第三步替换args里面的类型为具体类型 var myArgs new Type[] { Type.GetType(System.String), Type.GetType(System.Int32) };
第四步得到具体的泛型类 var type genericType.MakeGenericType(myArgs); 得到的type的AssemblyQualifiedName 非常的不友好(如下)不建议直接用Type.GetType(AssemblyQualifiedName)这种方式创建
System.Collections.Generic.Dictionary2[[System.String, System.Private.CoreLib, Version6.0.0.0, Cultureneutral, PublicKeyToken7cec85d7bea7798e],[System.Int32, System.Private.CoreLib, Version6.0.0.0, Cultureneutral, PublicKeyToken7cec85d7bea7798e]], System.Private.CoreLib, Version6.0.0.0, Cultureneutral, PublicKeyToken7cec85d7bea7798e。
用途 Blazor动态控件DynamicComponent需要给定Type参数我想让这个参数由外部配置给出这样就可以把各种控件灵活的放到一个方块里展示了。