获取反射的 PropertyInfo 类型的字符串表示形式

问题描述 投票:0回答:1

我有这个示例代码: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
的原始类型相关的内容?

c# .net reflection
1个回答
0
投票

首先请看:

  • 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

© www.soinside.com 2019 - 2024. All rights reserved.