MissingMethodException C # NET Стандартный - PullRequest
0 голосов
/ 31 мая 2018

Я работаю над 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)
        });
    }
}

HttpGET

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

Это работает, как ожидалось.Проблема заключается в других методах Http.

POST Http

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 голосов
/ 11 июня 2018

Я решил эту проблему, скопировав в PCL все, что содержит интерфейсы, в новый и изменив все ссылки на самые новые.

0 голосов
/ 31 мая 2018

Вы проверяли другие сообщения, я нашел этот ответ от Polity на SO: https://stackoverflow.com/a/8059594/4794396 PS: не могу оставить комментарий, так как у меня еще нет 50 репутаций, следовательно, ответ!

ОБНОВЛЕНИЕ: Включая ключевые моменты из связанного ответа ... Вероятно, где-то есть остаточные старые версионные библиотеки DLL.Исходя из комментария Ладенеджа к приведенному выше ответу, это может быть из-за того, что GAC имеет более старые версии.

...