Я работаю над библиотекой классов, чтобы расширить некоторые функции навигации до среды с открытым исходным кодом.Я предпочитаю не добавлять эти функциональные возможности непосредственно в фреймворк как запрос извлечения, потому что он не будет использоваться всеми и не хочет излишне раздувать размер фреймворка.Поэтому моя идея заключается в том, чтобы реализовать в качестве метода расширения.
Вот как код реализован в рамках.
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
Ценю, если кто-то может помочь решить эту проблему.