【问题标题】:MissingMethodException C# NET StandardMissingMethodException C# NET 标准
【发布时间】:2018-05-31 02:57:06
【问题描述】:

我正在开发一个 REST API,其中类共享它们的大部分行为,例如简单的 GET PUT POST DELETE。

有很多类,因此我决定创建带有约束的空接口和泛型方法来管理其所有功能。

外观示例:

界面

public interface IGetByOwner
{
}  

类

public class Customer : IGetByOwner
{
    public int OwnerID {get;set;}
}

帮手

public class LTHttpClient
{
    public static async Task<HttpResponseMessage> GetByOwner<T>(int ownerId)
        where T : IGetByOwner
    {
        var uri = $"{LTContext.apiRoot}/{typeof(T).Name}?ownerId={ownerId}";

        return await SendRequest(new HttpRequestMessage
        {
            Method = HttpMethod.Get,
            RequestUri = new System.Uri(uri)
        });
    }
}

http 获取

var response = await LTHttpClient.GetByOwner<Customer>(Owner.Id);

这按预期工作。问题出在其他 Http 方法上。

Http POST

var response = await LTHttpClient.GetByOwner<Customer>(Owner.Id);

这会引发异常消息:

System.MissingMethodException: 'Method not found: 
'System.Threading.Tasks.Task`1<System.Net.Http.HttpResponseMessage> 
LeafyTracker_PCL.LTHttpClient.Post(!!0)'.'

此代码(所有事务)在 PCL .NET Standard 2.0 上运行,同时在 WinForm 项目上调用方法
我做错了什么?

2018 年 1 月 6 日更新

问题似乎是某处图书馆的旧参考。
但是,我已经清理了解决方案,删除了 bin 文件夹并重新构建了所有文件,但仍然抛出异常。有什么建议吗?

【问题讨论】:

  • 你有没有故意让问题中的 Http GET 和 Http POST 完全一样?它们都是“var response = await LTHttpClient.GetByOwner(O​​wner.Id);”

标签: c# httprequest .net-standard


【解决方案1】:

您是否查看过其他帖子,我在 SO 上找到了 Polity 的答案:https://stackoverflow.com/a/8059594/4794396 PS:无法发表评论,因为我还没有 50 声望,因此,一个答案!

更新:包括链接答案中的关键点... 某处可能存在残留的旧版本 DLL。根据 Ladenedge 对上述答案的评论,这可能是因为 GAC 的版本较旧。

【讨论】:

  • 如果你要链接一个答案,至少用你自己的话总结一下相关的信息
  • @TheGeneral 我明白总结要点的重要性,因此我已经这样做了。也就是说,我也希望提问者查看链接的答案本身,因为当链接的答案可能没有帮助时,链接周围的答案和其他答案/ cmets 可能会有所帮助。
  • 那行不通。我已经清理了我的解决方案,还在库中添加了一些其他有效的测试方法。
  • 你是对的。我添加的最新虚拟方法也抛出此错误
  • 您的项目是否已经增长了许多类和函数?或者这只是一个开始,你遇到过这个?如果可以共享内容,请将所有相关文件共享到某个地方,也许我会自己尝试一下。同样,这是这个问题的本质,否则我不会要求分享内容。
【解决方案2】:

我通过将 PCL 中包含接口的所有内容复制到一个新的接口中,并将所有引用更改为最新的来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2021-08-12
    • 2020-02-19
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多