gpt4 book ai didi

c# - 调用对象方法而不考虑参数类型

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

我正在使用 DynamicObject 来包装内部对象并屏蔽泛型,但是当我尝试在内部对象上调用某些方法时,它们需要类型化参数,但是我将所有参数都视为对象类型,因此调用失败。

代码:

public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
try
{
result = mInternalObject.GetType().InvokeMember(binder.Name, (BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public), null, mInternalObject, args);
return true;
}
catch (Exception)
{
return base.TryInvokeMember(binder, args, out result);
}
}

所以基本上,我想知道如何让它忽略参数类型并无论如何调用对象的方法,有什么建议吗?

最佳答案

我怀疑您想要类似(伪代码,非常简单)的内容:

var mem = internalObject.GetType().GetMember(binder.Name);
if (mem.IsGenericDefinition)
mem = mem.MakeGeneric(Array.Convert(args, x => x.GetType()));
var result = mem.Invoke(null, internalObject, args);

关于c# - 调用对象方法而不考虑参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828550/

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