gpt4 book ai didi

c# - 找不到重载方法

转载 作者:行者123 更新时间:2023-11-30 18:14:01 26 4
gpt4 key购买 nike

设置如下:

  • .NET Standard 2.0 库
  • 它的一个 NUnit 测试项目,目标是 .NETFramework 4.6.1

最新的 VS 2017,最新的 NUnit。

周末我一直在家里处理这个项目,将我的工作上传到 git,今天开始工作(我之前已经在这两个地方工作过)。直到现在才发现项目有问题(一开始是什么问题记不太清楚了,不过好像和现在的问题一样,后面再说)。

在摆弄到无法修复的状态后,我完全删除了它并重新克隆了 git repo。

该项目编译良好 ,但在运行时 测试抛出“找不到方法”异常。稍微查了一下发现问题只出现在以下方法的一个重载上:

    public static YNABClient GetInstance(HttpMessageHandler _handler)
{
if (instance is null)
{
instance = new YNABClient(_handler);
}

return instance;
}

public static YNABClient GetInstance() => GetInstance(new HttpClientHandler());

没有参数的可以,有参数的不行。删除和添加库作为测试的引用,删除和添加测试和库项目。我在 Internet 上找到的针对类似情况的其他解决方案都与 ASP.NET MVC 有关,但我的情况并非如此,尽管 this这个问题确实让我检查了重载并发现其中一个确实有效。

虽然我还没有像在工作时那样尝试删除并重新安装项目,但在家里一切仍然正常。这导致了 2 个可能的问题来源:环境,尽管我还没有找到有意义的差异,或者 git,尽管我对 VS ( this one ) 使用了“stock”git ignore,所以不应该有问题那里。我的项目的基本设置在周末没有改变并且之前工作正常,所以最近的摆弄导致了一些问题。

此外,如果我将控制台应用程序(.Net Framework 4.6.1)添加到解决方案并尝试从中调用有问题的方法,它实际上工作正常。

如果有帮助,我的项目 github 是 here

有人要求我在评论中调用示例。基本上,我有 2 个具有不同设置的 Test Fixture 类 - 一个用于实际 API 调用以便于调试实际使用,另一个用于伪造它,按照良好的测试实践。作品:

    [OneTimeSetUp]
public void Setup()
{
ynabClient = YNABClient.GetInstance();
ynabClient.RefreshAccessToken(ApiKeys.AccessToken);
}

抛出异常:

    [OneTimeSetUp]
public void Setup()
{
handler = new StubHandler();
ynabClient = YNABClient.GetInstance(handler);
}

一些调查显示我的问题很可能与 System.Net.Http 与 .NET Framework 和 .NET Standard 的版本控制差异有关,如果您用谷歌搜索,这是一个相当普遍的问题。但是,我挖出的所有示例都没有表现出我的特殊症状,而且我还不确定该怎么做。以及为什么在我的家用 PC 上一切正常。

最佳答案

您遇到的问题是您的 GetInstance 方法接受 HttpMessageHandler 作为参数,并且在您的 test 中您正在传递 HttpClientHandler 对象。因此,您声明了一个参数,但在调用该方法时提供了不同的对象。

关于c# - 找不到重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481298/

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