我正在开发一个类库,以将一些导航功能扩展到开源框架。我不喜欢将这些功能作为拉取请求直接添加到框架中,因为它不会被所有人使用,并且不想不必要地扩大框架的大小。所以我的想法是作为扩展方法来实现。
这就是代码在框架中的实现方式。
public interface INavigationService
{
Task Method1();
Task Method2();
}
public class NavigationService : INavigationService
{
public async Task Method1
{
//Implementation
}
public async Task Method1
{
//Implementation
}
}
在框架内的基本 View 模型中,有 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
}
}
我已经构建了我创建的库并在应用程序项目中引用了该库,但是当我尝试以下操作时,我没有在 NavigationService 上获得 Method3。
NavigationService.Method3("abcd") //does not resolve Method3
如果有人可以帮助解决此问题,我们将不胜感激。
最佳答案
除了引用程序集之外,您还需要在要使用扩展方法的文件中导入命名空间。
关于c# - 界面上的扩展方法未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54668099/