gpt4 book ai didi

c# - 通过反射实例化一组不可访问的类

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:32 26 4
gpt4 key购买 nike

我目前正在帮助使用 Unity3D 引擎开发游戏。我们需要使用 Curve Editor用于描述给定法术的伤害程度。 Unity3D 引擎的 C# 程序集中已经有一个具有所需功能的曲线编辑器类,但无法访问。我试图通过反射实例化该类型的对象。然而我遇到了一个问题。此类的构造函数需要几个参数,其中 1 恰好是另一个不可访问类的数组。这就是问题所在。我能够通过反射构造一个对象,但不能构造该类型的对象数组。这是构造函数:

public CurveEditor(Rect rect, CurveWrapper[] curves, bool minimalGUI){...}

我能够构建一个 CurveWrapper带有 Reflection 的对象,但不是整个数组。我试图创建 Object[]数组并放几个 CurveWrapper里面的对象,但是当我通过反射将此数组传递给构造函数时,我得到无效的参数异常。

有人可以帮我解决这个问题吗?

最佳答案

我怀疑你在寻找 Array.CreateInstance .

Type type = ...; // However you get to CurveWrapper
IList array = Array.CreateInstance(type, 2);
array[0] = Activator.CreateInstance(type);
array[1] = Activator.CreateInstance(type);

我不得不说,如果 CurveEditor是无法访问的,我不会尝试非常反射(reflection)。即使它现在可以工作,我认为 Unity3D 人员以后对其进行不兼容的更改是完全合理的。使用非公共(public) API 会导致代码非常脆弱。

关于c# - 通过反射实例化一组不可访问的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16531484/

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