gpt4 book ai didi

c# - "Specified cast is not valid"仅适用于 MS 版本的发布版本

转载 作者:行者123 更新时间:2023-11-30 13:32:22 25 4
gpt4 key购买 nike

当仅从 MSBuild 4.0 执行发布构建时,我收到有效的“指定转换无效”。我使用 Visual Studio 2012 的发布版本对此进行了测试,但没有遇到此问题。我还使用 MSBuild 4.0 的调试版本对此进行了测试,但没有遇到此问题。

异常:enter image description here

代码

    public abstract class CachedSessionBase : ISessionObject
{
protected Dictionary<MethodBase, Object> _getAndSetCache = new Dictionary<MethodBase, object>();

protected TResult SetAndGet<TResult>(ObjectFactory factory, Func<TResult> func)
{
StackTrace stackTrace = new StackTrace();
var methodBase = stackTrace.GetFrame(1).GetMethod();

if (!_getAndSetCache.ContainsKey(methodBase))
{
_getAndSetCache[methodBase] = func.Invoke();
}

return (TResult)_getAndSetCache[methodBase];
}

错误在这一行被抛出

return (TResult)_getAndSetCache[methodBase];

最佳答案

很可能调用堆栈与您预期的不同。您的方法可能正在内联,然后 GetFrame(1) 正在检索调用者的调用者。当从字典中检索值时,它属于不同的类型,因为它用于不同的方法。

您可以尝试将属性 [MethodImpl(MethodImplOptions.NoInlining] 添加到 SetAndGet 以防止对该方法进行内联优化。

关于c# - "Specified cast is not valid"仅适用于 MS 版本的发布版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14241389/

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