MissingMethodException C#NET Standard

时间:2018-05-31 02:57:06

标签: c# httprequest .net-standard

我正在开发一个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 GET

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项目上调用方法 我做错了什么?

更新01/06/2018

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

2 个答案:

答案 0 :(得分:0)

您是否查看了其他帖子,我在Polity上找到了这个答案:https://stackoverflow.com/a/8059594/4794396 PS:不能发表评论,因为我还没有50个声誉,因此,答案!

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

答案 1 :(得分:0)

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