我有这个示例代码:https://dotnetfiddle.net/TWeO29
在第 33 行,我想显示我的代码未处理的基础类型。我期待看到类似
float
的内容,因为我的代码未处理的唯一类型是我的 radius
类的 Tester
属性。
我知道如何以编程方式与
PropertyType == typeof(float)
进行比较,但我明确询问如何获取这种类型的字符串表示形式。如果我没有显式处理类型,那么我希望我的程序向我显示我需要添加支持的类型。
我已经浏览并尝试了这里的所有属性:https://learn.microsoft.com/en-us/dotnet/api/system.type?view=net-8.0看起来相关,它们基本上都沸腾了降至运行时或
System.Single
。我如何获得一些有意义且与反映 float
的原始类型相关的内容?
首先请看:
System.Type
,System.Type.Name
,System.Type.FullName
,System.Type.Namespace
请注意,
typeof
Object.GetType()
都返回 System.Type
的实例,只有 typeof
接受输入类型并返回编译时类型数据,但 Object.GetType()
返回运行时类型。
反映属性时,可以使用
PropertyInfo.PropertyType
。它返回一个 System.Type
对象,该对象也与属性的编译时类型相关。要获取运行时属性类型,显然,您需要具有此属性的对象的实例,并在该属性返回的对象上使用 Object.GetType()
来获取此运行时类型。
(如果你的属性类型是一个可以通过继承扩展的非密封类型,那么所有可能的运行时属性类型的集合就是一个多态集;并且运行时类型仅适用于由财产。)
谢谢。
—SA