gpt4 book ai didi

reflection - 如何确定 ConstructorInfo 对象是否具有非托管参数?

转载 作者:行者123 更新时间:2023-12-04 16:01:42 26 4
gpt4 key购买 nike

我的应用程序在运行时使用反射来分析 c++/cli 代码。
我需要确定一个类型是否有一个没有非托管参数(指针等)的构造函数,因为我想稍后使用:

ConstructorInfo constructorInfo;  
// ...
var ret = constructorInfo.Invoke(BindingFlags..., null, myParameters, null);

如果构造函数有一个指向非托管对象的指针作为参数,当我将 null 传递给它时会出现转换异常。

那么我如何确定呢?没有 IsManaged... 并且 IsPointer 在这种情况下没有帮助。

最佳答案

不清楚您的问题究竟是什么,但这里有一个简短的演示程序,显示通过 null到一个构造函数,它接受一个指针作为参数并用 IsPointer 检测它:

using System;
using System.Reflection;

namespace pointers
{
unsafe class Program
{
public Program(int* x)
{
Console.WriteLine("It worked!");
}

static void Main(string[] args)
{
ConstructorInfo[] c = typeof(Program).GetConstructors();
c[0].Invoke(BindingFlags.Default, null, new object[] { null }, null);
Console.WriteLine(c[0].GetParameters()[0].ParameterType.IsPointer);
}
}
}

它打印:它起作用了!
真的

关于reflection - 如何确定 ConstructorInfo 对象是否具有非托管参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925862/

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