c# - 界面上的扩展方法未显示

标签 c# .net extension-methods

我正在开发一个类库,以将一些导航功能扩展到开源框架。我不喜欢将这些功能作为拉取请求直接添加到框架中,因为它不会被所有人使用,并且不想不必要地扩大框架的大小。所以我的想法是作为扩展方法来实现。

这就是代码在框架中的实现方式。

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/

相关文章:

c# - log4net 创建日志文件但不写入

.net - 用于xunit测试的Gradle脚本不执行任何操作或抛出execCommand == null

c# - 扩展枚举,矫枉过正?

c# - 为什么使用 ConditionalAccessExpression 会改变我的扩展方法的工作方式?

c# - VB 2008 程序集中的扩展方法不能在 C# 项目中使用?

c# - 如何在下拉列表中添加表字段的2列值

c# - 如何编写对称版本的对齐值公式(在 C# 中)

c# nhibernate id 是否在删除时自动重置?

c# - 使用 System.Windows.Forms.WebBrowser 捕获 http 数据

c# - BitmapImage 到 byte[]