Метод расширения на интерфейсе не отображается - PullRequest
0 голосов
/ 13 февраля 2019

Я работаю над библиотекой классов, чтобы расширить некоторые функции навигации до среды с открытым исходным кодом.Я предпочитаю не добавлять эти функциональные возможности непосредственно в фреймворк как запрос извлечения, потому что он не будет использоваться всеми и не хочет излишне раздувать размер фреймворка.Поэтому моя идея заключается в том, чтобы реализовать в качестве метода расширения.

Вот как код реализован в рамках.

public interface INavigationService
{
    Task Method1();
    Task Method2();
}

public class NavigationService : INavigationService
{
    public async Task Method1
    {
      //Implementation
    }

    public async Task Method1
    {
      //Implementation
    }
}

И в базовой модели представления в рамках есть свойство типаINavigationService.

public class BaseFrameworkViewModel
{
   public INavigationService NavigationService {get; set;}

   //Other implementations.
} 

И разработчики, использующие эту среду, наследуют от BaseFrameworkViewModel в проекте приложения и используют методы Method1 и Method2.

public class BaseViewModel : BaseFrameworkViewModel
{
     NavigationService.Method1();
     NavigationService.Method2();
}

Теперь я хотел бы добавитьMethod3 для класса NavigationService.Для этого я создал библиотеку классов .NetStandard, добавил статический класс и создал метод расширения, как показано ниже.Но я не вижу метода в BaseViewModel.

Моя реализация

public static class NavigationExtensionService
{
   public static async Task Method3(this INavigationService navigationService, string a1)
   {
       //Method Implementation
   } 
} 

Я создал библиотеку, которую создал и на которую ссылался в проекте приложения, однако, когдая пробую ниже, я не получаю Method3 на NavigationService.

NavigationService.Method3("abcd") //does not resolve Method3

Ценю, если кто-то может помочь решить эту проблему.

1 Ответ

0 голосов
/ 13 февраля 2019

Помимо ссылки на сборку, вам также необходимо импортировать пространство имен в файлы, для которых вы хотите использовать метод расширения.

...