gpt4 book ai didi

c# - 用反射检测原生对象

转载 作者:太空狗 更新时间:2023-10-30 00:57:45 27 4
gpt4 key购买 nike

我正在使用基于反射的对象翻译器。

它基本上循环遍历对象的属性,并将值分配给翻译对象上具有相同名称/类型的属性。

ObjectA.Name = "乔"

转换为:

ObjectB.Name = "乔"

我需要放一个特例,当一个属性是一个自定义类时,例如:

ObjectA.Address

我希望我可以使用 PropertyType 的 IsClass 标志来检测此类属性

propInfo.PropertyType.IsClass

但是这个标志似乎也为字符串属性返回 true。

有没有另一种方法可以验证该属性是非 native 类型?

最佳答案

我假设您想确定目标类型是否不是原始类型。你或许可以为此使用 TypeCode,例如:

public bool IsNotCoreType(Type type)
{
return (type != typeof(object) && Type.GetTypeCode(type) == TypeCode.Object);
}

任何非原始类型都应该返回 TypeCode.Object 作为 Type.GetTypeCode 的结果,所以我们可以检查我们是否得到了它并且类型本身不是 System.Object

也许这会有帮助?

更新:我已将该方法重命名为 IsNotCoreType 以涵盖原语和非原语,例如 StringDateTime 等(见下面的评论)。

关于c# - 用反射检测原生对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4444908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com