gpt4 book ai didi

c# - .NET 反射 - 如何从 ParameterInfo 中获取 "real"类型

转载 作者:IT王子 更新时间:2023-10-29 04:43:02 26 4
gpt4 key购买 nike

我正在尝试验证参数既是输出参数又是扩展接口(interface) (ICollection)。反射 api 似乎不想给我参数的“真实”类型,只有最后带有“&”的参数不会在 IsAssignableFrom 语句中正确评估。我已经编写了一些有效的 C# 代码,但似乎应该有更好的方法来执行此操作。

bool isCachedArg(ParameterInfo pInfo)
{
if (!pInfo.IsOut)
return false;

string typeName = pInfo.ParameterType.FullName;
string nameNoAmpersand = typeName.Substring(0, typeName.Length - 1);
Type realType = Type.GetType(nameNoAmpersand);

if (!typeof(ICollection).IsAssignableFrom(realType))
return false;

return true;
}

有没有办法在不从字符串名称重新加载类型的情况下获取 realType?我仍在使用 .NET 2.1。

谢谢,兰迪

最佳答案

out 参数是“by ref” - 所以您会发现 pInfo.ParameterType.IsByRef 返回 true。要获取底层的 not-by-ref 类型,请调用 GetElementType():

Type realType = pInfo.ParameterType.GetElementType();

(当然,只有当 是 ref 时,你才应该这样做。这也适用于 ref 参数。)

关于c# - .NET 反射 - 如何从 ParameterInfo 中获取 "real"类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738277/

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