- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
尝试使用 C# 7 的局部函数,我最终得到了一些有趣的行为。考虑以下程序:
public void Main()
{
Console.WriteLine("Entered Main");
DoSomething("");
}
private void DoSomething(object obj)
{
Console.WriteLine("Entered DoSomething");
Generic((dynamic)obj);
GenericLocal(obj);
GenericLocal((dynamic)obj); // This breaks the program
void GenericLocal<T>(T val) => Console.WriteLine("GenericLocal");
}
private void Generic<T>(T val) => Console.WriteLine("Generic");
这会产生:
Entered Main
... 然后抛出 BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B)
。堆栈跟踪:
at UserQuery.DoSomething(Object obj)
at UserQuery.Main()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
(我在 LINQPad 中运行它,但我从 dotnetfiddle 得到了类似的结果。)
删除代码中指示的行会产生您期望的输出:
Entered Main
Entered DoSomething
Generic
GenericLocal
谁能解释一下为什么?
最佳答案
这turned out to be a bug ,但是当 dotnet 团队研究它时,他们意识到他们无法轻易修复问题,因此本地泛型方法将按照非本地泛型方法的方式工作。所以改为they opted使编译器在您尝试执行此操作时产生错误。
CS8322 Cannot pass argument with dynamic type to generic local function 'GenericLocal' with inferred type arguments.
关于c# - 为什么使用动态参数调用通用本地函数会产生 BadImageFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45495869/
我有一个 Web 服务,每当我尝试从 Visual Studio 运行该服务时,它都会引发 BadImageFormatException。 This answer另一个问题建议对 DLL 运行 pe
我在 X64 上运行 这是我的代码: ColorFileMapping = CreateFileMapping(new IntPtr(-1), IntPtr.Zero, 0x04, 0, _byte
在 Windows 8 64 位上编译或尝试运行我的应用程序时抛出“BadImageFormatException”。我在网上搜索了一下,很多人都有同样的错误信息。但是,没有一个解决方案可以解决我的问
尝试使用 C# 7 的局部函数,我最终得到了一些有趣的行为。考虑以下程序: public void Main() { Console.WriteLine("Entered Main");
这个问题在这里已经有了答案: Could not load file or assembly ... An attempt was made to load a program with an in
我有一个使用 Visual Studio 2010 并以完整的 .NET Framework 4 为目标用 C# 编写的 Windows 服务。当我从调试版本运行时,该服务按预期运行。但是,当我从发布
我正在为另一个基于公共(public) .NET API 的程序编写插件。通常,这些插件是通过创建引用 API 程序集的类库 DLL 来制作的。然后通过从 API 程序集中的基本命令类继承来创建命令类
在通过联系本地 Web 服务的 .NET 3.5 SP1 项目进行调试时,我收到了异常 System.BadImageFormatException:“错误的类标记” 当然,关于导致异常的原因没有更多
我正在开发我的第一个自定义操作,但无法加载生成的 .CA.dll 文件。这是最简单的过程和结果: 我创建了一个自定义操作项目并保留所有默认值。该类看起来像这样: using Microsoft.Dep
我正在尝试运行我在 Visual Studio 2012 中创建的 WCF 服务。 我在页面中遇到以下错误。 > Exception Details: System.BadImageFormatExc
后续行动: OpenGL4Net WM_PAINT does not exist? 我仍然密切关注:https://sourceforge.net/p/ogl4net/wiki/Tutorials 目
我正在尝试运行我在 Visual Studio 2012 中创建的 WCF 服务。 我在页面中遇到以下错误。 > Exception Details: System.BadImageFormatExc
我已经从 Here 下载了 tesseract。当我尝试将 dll 文件添加到 visual studio 2012 时,它显示错误,表明它不是有效的程序集。任何人都可以建议我一些其他的 ocr 和示
请帮忙,我已经尝试了所有我能想到的方法来解决这个问题。 在您回复之前请注意: 我已尽我所能解决 StackOverflow.com 上的其他问题和网络上的其他软件。例如但不限于:将构建配置从“任何 C
我发誓 Microsoft 对 Visual Studio 的“进化”越多,整个过程就越无知。 我有一个包含 3 个类库的 Windows 服务。我进入每个类库的属性并将平台目标设置为 x64。我对
我遇到以下运行时错误,我的控制台应用程序 (VS2012) 引用“dcasdk.dll”。控制台应用程序的 .Net Framework 是 4.5,平台目标是“任何 CPU”。 Could not
当我尝试运行安装程序来设置服务时出现以下异常: # ./InstallUtil ../../../../Applications/GasPosApp/bin/Wrapper.exe -s ../../
当我尝试在 IIS 7.0(在 Windows Server 2008 上使用 VSTS 2010 + .Net 4.0 开发)中访问网站中的页面 (default.aspx) 时,我遇到了以下错误消
尝试从 .net 连接到 oracle 数据库时出现以下异常: Attempt to load Oracle client libraries threw BadImageFormatExceptio
问题 我正在构建服务结构应用程序。当我创建一个项目并运行它时,它工作正常。但是当我在 Api Controller 中注入(inject)服务时,它给了我这个错误,我尝试解决它但尚未成功。 错误 Sy
我是一名优秀的程序员,十分优秀!