1.3 KiB
1.3 KiB
MonoScriptRuntime::TryGetClassFieldDefaultValues
命名空间: XCEngine::Scripting
类型: method
头文件: XCEngine/Scripting/Mono/MonoScriptRuntime.h
签名
bool TryGetClassFieldDefaultValues(
const std::string& assemblyName,
const std::string& namespaceName,
const std::string& className,
std::vector<ScriptFieldDefaultValue>& outFields) const override;
当前实现流程
- 清空
outFields。 - 用
(assemblyName, namespaceName, className)查找缓存的类元数据。 - 切换到当前 app domain。
- 创建一个临时托管对象并执行默认构造。
- 遍历缓存字段,逐个读取字段值并写入
ScriptFieldDefaultValue。 - 按
fieldName排序后返回。
为什么它重要
这里返回的是托管类真实初始化后的字段值,所以它能反映:
- C# 字段初始化表达式
- 默认构造后留下的初始状态
ScriptEngine::TryGetScriptFieldModel() 和 ClearScriptFieldOverrides() 都依赖这条数据。
失败路径
- 类找不到
- Mono 无法创建临时对象
- 任意字段读取失败
这些情况都会返回 false,并清空输出。