接口上的扩展方法未显示
Extension method on a interface not showing up
我正在开发 class 库以将一些导航功能扩展到开源框架。我不喜欢将这些功能作为拉取请求直接添加到框架中,因为它不会被每个人使用并且不想不必要地膨胀框架的大小。所以我的想法是作为扩展方法来实现。
代码在框架中是这样实现的。
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 class。因此,为此我创建了一个 .NetStandard class 库并添加了一个静态 class 并创建了如下所示的扩展方法。但是我看不到 BaseViewModel 中的方法。
我的实现
public static class NavigationExtensionService
{
public static async Task Method3(this INavigationService navigationService, string a1)
{
//Method Implementation
}
}
我已经构建了我创建并在应用程序项目中引用的库,但是当我尝试以下操作时,我没有在 NavigationService 上获得 Method3。
NavigationService.Method3("abcd") //does not resolve Method3
如果有人可以帮助解决此问题,我们将不胜感激。
除了引用程序集,还需要在要使用扩展方法的文件中导入命名空间。
我正在开发 class 库以将一些导航功能扩展到开源框架。我不喜欢将这些功能作为拉取请求直接添加到框架中,因为它不会被每个人使用并且不想不必要地膨胀框架的大小。所以我的想法是作为扩展方法来实现。
代码在框架中是这样实现的。
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 class。因此,为此我创建了一个 .NetStandard class 库并添加了一个静态 class 并创建了如下所示的扩展方法。但是我看不到 BaseViewModel 中的方法。
我的实现
public static class NavigationExtensionService
{
public static async Task Method3(this INavigationService navigationService, string a1)
{
//Method Implementation
}
}
我已经构建了我创建并在应用程序项目中引用的库,但是当我尝试以下操作时,我没有在 NavigationService 上获得 Method3。
NavigationService.Method3("abcd") //does not resolve Method3
如果有人可以帮助解决此问题,我们将不胜感激。
除了引用程序集,还需要在要使用扩展方法的文件中导入命名空间。