gpt4 book ai didi

c# - 从 C++/CLI 访问 TryGetMember

转载 作者:行者123 更新时间:2023-11-30 16:59:53 25 4
gpt4 key购买 nike

在我的 C++/CLI 项目中,我尝试访问位于派生自 DynamicObject 的类中的 TryGetMember 方法。此类是 C# DLL 的一部分。 TryGetMemberGetMemberBinding 对象作为第一个参数。我应该传递什么值?

一些人suggest using Impromptu .但是,我目前不明白 Impromptu 如何帮助回答我的问题。

最佳答案

How to call DynamicObject.TryGetMember directly? 中所述, TryGetMember 不应直接调用。必须改为创建 CallSite。这也适用于 C++/CLI。我可以使用以下代码让它工作:

Object^ dynamicObject(Object^ object, String^ memberName)
{
array<CSharpArgumentInfo^>^ infos = { CSharpArgumentInfo::Create(CSharpArgumentInfoFlags::None, nullptr) };
CallSiteBinder^ binder = RuntimeBinder::Binder::GetMember(CSharpBinderFlags::None, memberName, object->GetType(), infos);
auto callsite = CompilerServices::CallSite<Func<CallSite^, Object^, Object^>^>::Create(binder);
return callsite->Target(callsite, object);
}

关于c# - 从 C++/CLI 访问 TryGetMember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23016603/

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